咦,List集合按照日期進行排序,這不是很簡單嗎,sql一句話就搞定了呀。是呀,sql可以很簡單的搞定,但是,我遇到的這種情況是第三方接口返回的數據,沒有按照日期排序,這個,和第三方協商有時候可能不是那麼容易哈。所以呢,就只能自己這邊想辦法咯;項目中跟着經理學到了重要的一點:分析定位到問題產生的原因,看看是誰的問題,是我們邊,還是第三方那邊;如果是第三方那邊的問題,那麼不要把所有希望都寄託在第三方那邊;自己這邊先想解決辦法,萬一第三方那邊不好協商或者其他原因的情況下,自己這邊有備選方案,不至於那麼被動。 嗯~o(* ̄▽ ̄*)o 很有道理的樣子,自己這邊做好充足的準備,兵來將擋,水來土掩~~
假設有這樣一個集合List<Student> stuList = new ArrayList<>(); 有個學生實體類,學生有出生日期這個字段。然後呢,這些數據是第三方給的。假設現在已經有數據了,但是按照出生日期 這個集合是沒有順序的,現在要按照出生日期降序排列集合,就這樣做(想試驗的童鞋可以自己造些數據哈~`):
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator; //要引入的包,不要導錯咯哦
//返回數據按照出生日期降序排 (我比較懶,方法頭就不寫了~~)
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Collections.sort(stuList, new Comparator<Student>(){
@Override
public int compare(Student arg0, Student arg1) {
int mark = 1;
try {
Date date0 = sdf.parse(arg0.getAtime());
Date date1 = sdf.parse(arg1.getActPJtime());
if(date0.getTime() > date1.getTime()){
mark = -1;
}
if(arg0.getBirthTime().equals(arg1.getBirthTime())){
mark = 0;
}
} catch (ParseException e) {
logger.error("日期轉換異常", e);
e.printStackTrace();
}
return mark;
} //compare
});
貌似是Conllections中就有這個方法,關鍵時刻居然忘了-_-!! 反正這樣做 就可以了,想了解更多的可以去看API