溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2021-11-08 12:46:30 來源:億速云 閱讀:493 作者:柒染 欄目:開發(fā)技術(shù)

本篇文章給大家分享的是有關(guān)java如何自定義List中的sort()排序且用于日期排序,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

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 month2, String month3) {
  int mark = 1;
  try {
      Date date1 = sdft.parse(month2);
      Date date2 = sdft.parse(month3);
      if(date1.getTime() < date2.getTime()){
       mark = -1;//調(diào)整順序,-1為不需要調(diào)整順序;
      }
      if(month2.equals(month3)){
       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)行升序排序。這要求列表中的所有元素都必須實(shí)現(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());
    } 
}

以上就是java如何自定義List中的sort()排序且用于日期排序,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI