java如何自定義List中的sort()排序,用于日期排序
java 自定義List中的sort()排序
1、問題描述
List是java中一個有序可重復(fù)的的集合,其中自帶的.sort()排序方法,該方法在針對純數(shù)字類型List集合排序的時候很有效。但是對于裝入其他類型的List集合,自帶的sort()方法排序我們很難控制,比如一個日期集合的排序。
2、解決方法
java中List允許我們自定義sort()排序方法,以下自定義了List集合的sort排序方法,用于對一個字符串類型的日期集合進(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兩個日期類型的對象也可以用如下方法進(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日期,返回的是一個布爾類型結(jié)果。
java Collections類:sort()升序排序
正向排序
使用 Collections 類的靜態(tài)方法 sort() 可以對集合中的元素進(jìn)行升序排序。這要求列表中的所有元素都必須實現(xiàn) Comparable 接口,而且所有元素都必須是使用指定比較器可相互比較的。
sort() 方法主要有如下兩種重載形式
void sort(List list):根據(jù)元素的自然順序?qū)现械脑剡M(jìn)行升序排序。void sort(List list,Comparator comparator):按 comparator 參數(shù)指定的排序方式對集合中的元素進(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());
}
}
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JAVA入門教學(xué)之快速搭建基本的springboot(從spring boot到spring cloud)
本文主要入門者介紹怎么搭建一個基礎(chǔ)的springboot環(huán)境,本文通過圖文并茂的形式給大家介紹從spring boot到spring cloud的完美搭建過程,適用java入門教學(xué),需要的朋友可以參考下2021-02-02
Java日志框架打印應(yīng)用程序日志代碼的執(zhí)行情況分析
在配置INFO日志級別時,日志器(logger)中debug級的日志代碼仍會被執(zhí)行,只是是否輸出取決于配置的日志級別,本文基于Java 1.8、SLF4J 1.7.25和Log4j 2.20.0進(jìn)行實驗,詳述了日志框架處理日志代碼的機(jī)制,感興趣的朋友一起看看吧2024-10-10
SpringBoot創(chuàng)建自定義starter詳解
這篇文章主要介紹了SpringBoot創(chuàng)建自定義starter詳解,Starter是Spring Boot中的一個非常重要的概念,Starter相當(dāng)于模塊,它能將模塊所需的依賴整合起來并對模塊內(nèi)的Bean根據(jù)環(huán)境(條件)進(jìn)行自動配置,需要的朋友可以參考下2024-01-01
java從mysql導(dǎo)出數(shù)據(jù)的具體實例
這篇文章主要介紹了java從mysql導(dǎo)出數(shù)據(jù)的具體實例,有需要的朋友可以參考一下2013-12-12

