java如何自定義List中的sort()排序,用于日期排序
java 自定義List中的sort()排序
1、問題描述
List是java中一個(gè)有序可重復(fù)的的集合,其中自帶的.sort()排序方法,該方法在針對(duì)純數(shù)字類型List集合排序的時(shí)候很有效。但是對(duì)于裝入其他類型的List集合,自帶的sort()方法排序我們很難控制,比如一個(gè)日期集合的排序。
2、解決方法
java中List允許我們自定義sort()排序方法,以下自定義了List集合的sort排序方法,用于對(duì)一個(gè)字符串類型的日期集合進(jìn)行排序。
//待排序的集合 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排序,集合數(shù)據(jù)(月份)按升序排序; 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;//調(diào)整順序,-1為不需要調(diào)整順序; } if(month1.equals(month2)){ mark = 0; } } catch (ParseException e) { LOG.error("日期轉(zhuǎn)換異常", e); e.printStackTrace(); } return mark; } //compare });
3、其他
另外java兩個(gè)日期類型的對(duì)象也可以用如下方法進(jìn)行比較。
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日期,返回的是一個(gè)布爾類型結(jié)果。
java Collections類:sort()升序排序
正向排序
使用 Collections 類的靜態(tài)方法 sort() 可以對(duì)集合中的元素進(jìn)行升序排序。這要求列表中的所有元素都必須實(shí)現(xiàn) Comparable 接口,而且所有元素都必須是使用指定比較器可相互比較的。
sort() 方法主要有如下兩種重載形式
void sort(List list)
:根據(jù)元素的自然順序?qū)现械脑剡M(jìn)行升序排序。void sort(List list,Comparator comparator)
:按 comparator 參數(shù)指定的排序方式對(duì)集合中的元素進(jìn)行排序。
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()); } }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Maven 搭建SpringMVC+Hibernate項(xiàng)目詳解
本文主要介紹Maven 搭建SpringMVC+Hibernate的知識(shí),這里整理了詳細(xì)的資料,并附示例代碼,有興趣的小伙伴可以參考下2016-09-09java實(shí)現(xiàn)點(diǎn)擊按鈕彈出新窗體功能
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)點(diǎn)擊按鈕彈出新窗體功能,舊窗體不進(jìn)行操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07一個(gè)簡(jiǎn)單的SpringBoot項(xiàng)目快速搭建詳細(xì)步驟
Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開發(fā)過程,下面這篇文章主要給大家介紹了一個(gè)簡(jiǎn)單的SpringBoot項(xiàng)目快速搭建詳細(xì)步驟,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08Java中static修飾的靜態(tài)變量、方法及代碼塊的特性與使用
這篇文章主要介紹了Java中static修飾的靜態(tài)變量、方法及代碼塊的特性與使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04springboot連接neo4j報(bào)錯(cuò)的解決方案
這篇文章主要介紹了springboot連接neo4j報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02501 Command "HELO" requires an argument問題的解決方法
換一個(gè)windows服務(wù)器,發(fā)現(xiàn)就沒這樣的問題,僅在一臺(tái)Linux服務(wù)器上可以重現(xiàn),直觀感覺就是這臺(tái)Linux服務(wù)器某些配置有問題2013-08-08