java如何自定義List中的sort()排序,用於日期排序
java 自定義List中的sort()排序
1、問題描述
List是java中一個有序可重復的的集合,其中自帶的.sort()排序方法,該方法在針對純數字類型List集合排序的時候很有效。但是對於裝入其他類型的List集合,自帶的sort()方法排序我們很難控制,比如一個日期集合的排序。
2、解決方法
java中List允許我們自定義sort()排序方法,以下自定義瞭List集合的sort排序方法,用於對一個字符串類型的日期集合進行排序。
//待排序的集合 List<String> list=new ArrayList<String>(); list.add("2019-06"); list.add("2019-11"); list.add("2019-02"); list.add("2019-09"); list.add("2019-05"); //自定義list排序,集合數據(月份)按升序排序; final SimpleDateFormat sdft = new SimpleDateFormat("yyyy-MM"); Collections.sort(list, new Comparator<String>(){ @Override public int compare(String month1, String month2) { int mark = 1; try { Date date1 = sdft.parse(month1); Date date2 = sdft.parse(month2); if(date1.getTime() < date2.getTime()){ mark = -1;//調整順序,-1為不需要調整順序; } if(month1.equals(month2)){ mark = 0; } } catch (ParseException e) { LOG.error("日期轉換異常", e); e.printStackTrace(); } return mark; } //compare });
3、其他
另外java兩個日期類型的對象也可以用如下方法進行比較。
Date() date1=new Date(); Date() date2=new SimpleDateFormat("yyyy-MM-dd").parse("2019-06-11"); Boolean flag; if(date1.before(date2)){ flag=true; }
a.before(b);該方法是判斷a日期是否小於b日期,返回的是一個佈爾類型結果。
Java Collections類:sort()升序排序
正向排序
使用 Collections 類的靜態方法 sort() 可以對集合中的元素進行升序排序。這要求列表中的所有元素都必須實現 Comparable 接口,而且所有元素都必須是使用指定比較器可相互比較的。
sort() 方法主要有如下兩種重載形式
void sort(List list)
:根據元素的自然順序對集合中的元素進行升序排序。void sort(List list,Comparator comparator)
:按 comparator 參數指定的排序方式對集合中的元素進行排序。
public class Test{ public static void main(String[] args) { Student Student =new Student("張1","6M"); Student Student1 =new Student("張2","1M"); Student Student2 =new Student("張4","5M"); Student Student3 =new Student("張5","1M"); List<Student> list=new ArrayList<Student>(); list.add(Student); list.add(Student1); list.add(Student2); list.add(Student3); Collections.sort(list, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { return o2.getAge().compareTo(o1.getAge()); } }); System.out.println(list.toString()); } }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Java List的sort()方法改寫compare()實現升序,降序,倒序的案例
- Java使用Collections.sort對中文進行排序方式
- 淺談Java中Collections.sort對List排序的兩種方法
- Java設計模式之java策略模式詳解
- java集合進行排序的方式總結