1. 程式人生 > >List集合按照日期欄位進行排序

List集合按照日期欄位進行排序

        咦,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