欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java如何自定義List中的sort()排序,用于日期排序

 更新時(shí)間:2021年11月08日 11:19:24   作者:精打細(xì)算  
這篇文章主要介紹了java如何自定義List中的sort()排序,用于日期排序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

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)文章

  • 從java面試題了解你所模糊的數(shù)組

    從java面試題了解你所模糊的數(shù)組

    這篇文章主要介紹了從java面試題了解你所模糊的數(shù)組,數(shù)組用來存儲(chǔ)一系列的數(shù)據(jù)項(xiàng),其中的每一項(xiàng)具有相同的基本數(shù)據(jù)類型、類或相同的父類。通過使用數(shù)組,可以在很大程度上縮短和簡(jiǎn)化程序代碼,從而提高應(yīng)用程序的效率。,需要的朋友可以參考下
    2019-06-06
  • 在Java8中構(gòu)建Stream流的多種方式詳解

    在Java8中構(gòu)建Stream流的多種方式詳解

    當(dāng)我們處理集合數(shù)據(jù)時(shí),往往需要對(duì)其進(jìn)行各種操作,如過濾、映射、排序、歸約等,在 Java 8 中引入的 Stream 流為我們提供了一種更加簡(jiǎn)潔和靈活的方式來處理數(shù)據(jù),本文將介紹如何基于 Stream 構(gòu)建流,為你展示創(chuàng)建和操作流的多種方法
    2023-08-08
  • Maven 搭建SpringMVC+Hibernate項(xiàng)目詳解

    Maven 搭建SpringMVC+Hibernate項(xiàng)目詳解

    本文主要介紹Maven 搭建SpringMVC+Hibernate的知識(shí),這里整理了詳細(xì)的資料,并附示例代碼,有興趣的小伙伴可以參考下
    2016-09-09
  • java實(shí)現(xiàn)點(diǎn)擊按鈕彈出新窗體功能

    java實(shí)現(xiàn)點(diǎn)擊按鈕彈出新窗體功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)點(diǎn)擊按鈕彈出新窗體功能,舊窗體不進(jìn)行操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • java.lang.Void類源碼解析

    java.lang.Void類源碼解析

    這篇文章主要介紹了java.lang.Void類源碼解析的相關(guān)內(nèi)容,對(duì)源碼中的部分內(nèi)容進(jìn)行解釋,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • 一個(gè)簡(jiǎn)單的SpringBoot項(xiàng)目快速搭建詳細(xì)步驟

    一個(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-08
  • Java中static修飾的靜態(tài)變量、方法及代碼塊的特性與使用

    Java中static修飾的靜態(tài)變量、方法及代碼塊的特性與使用

    這篇文章主要介紹了Java中static修飾的靜態(tài)變量、方法及代碼塊的特性與使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • springboot連接neo4j報(bào)錯(cuò)的解決方案

    springboot連接neo4j報(bào)錯(cuò)的解決方案

    這篇文章主要介紹了springboot連接neo4j報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Spring Security登陸流程講解

    Spring Security登陸流程講解

    本文主要介紹了Spring Security登陸流程講解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 501 Command "HELO" requires an argument問題的解決方法

    501 Command "HELO" requires an argument問題的解決方法

    換一個(gè)windows服務(wù)器,發(fā)現(xiàn)就沒這樣的問題,僅在一臺(tái)Linux服務(wù)器上可以重現(xiàn),直觀感覺就是這臺(tái)Linux服務(wù)器某些配置有問題
    2013-08-08

最新評(píng)論