您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關java如何自定義List中的sort()排序且用于日期排序,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
List是java中一個有序可重復的的集合,其中自帶的.sort()排序方法,該方法在針對純數字類型List集合排序的時候很有效。但是對于裝入其他類型的List集合,自帶的sort()方法排序我們很難控制,比如一個日期集合的排序。
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 month2, String month3) { int mark = 1; try { Date date1 = sdft.parse(month2); Date date2 = sdft.parse(month3); if(date1.getTime() < date2.getTime()){ mark = -1;//調整順序,-1為不需要調整順序; } if(month2.equals(month3)){ mark = 0; } } catch (ParseException e) { LOG.error("日期轉換異常", e); e.printStackTrace(); } return mark; } //compare });
另外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日期,返回的是一個布爾類型結果。
使用 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()); } }
以上就是java如何自定義List中的sort()排序且用于日期排序,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。