List集合按照日期欄位進行排序
阿新 • • 發佈:2019-02-14
咦,List集合按照日期進行排序,這不是很簡單嗎,sql一句話就搞定了呀。是呀,sql可以很簡單的搞定,但是,我遇到的這種情況是第三方介面返回的資料,沒有按照日期排序,這個,和第三方協商有時候可能不是那麼容易哈。所以呢,就只能自己這邊想辦法咯;專案中跟著經理學到了重要的一點:分析定位到問題產生的原因,看看是誰的問題,是我們邊,還是第三方那邊;如果是第三方那邊的問題,那麼不要把所有希望都寄託在第三方那邊;自己這邊先想解決辦法,萬一第三方那邊不好協商或者其他原因的情況下,自己這邊有備選方案,不至於那麼被動。 嗯~o(* ̄▽ ̄*)o 很有道理的樣子,自己這邊做好充足的準備,兵來將擋,水來土掩~~
假設有這樣一個集合List<Student> stuList = new ArrayList<>(); 有個學生實體類,學生有出生日期這個欄位。然後呢,這些資料是第三方給的。假設現在已經有資料了,但是按照出生日期 這個集合是沒有順序的,現在要按照出生日期降序排列集合,就這樣做(想試驗的童鞋可以自己造些資料哈~`):
貌似是Conllections中就有這個方法,關鍵時刻居然忘了-_-!! 反正這樣做 就可以了,想了解更多的可以去看APIimport 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 });