好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

java 自定义List中的sort()排序

1、问题描述

List是java中一个有序可重复的的集合,其中自带的.sort()排序方法,该方法在针对纯数字类型List集合排序的时候很有效。但是对于装入其他类型的List集合,自带的sort()方法排序我们很难控制,比如一个日期集合的排序。

2、解决方法

java中List允许我们自定义sort()排序方法,以下自定义了List集合的sort排序方法,用于对一个字符串类型的日期集合进行排序。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

//待排序的集合

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 month1, String month2) {

   int mark = 1 ;

   try {

       Date date1 = sdft.parse(month1);

       Date date2 = sdft.parse(month2);

       if (date1.getTime() < date2.getTime()){

        mark = - 1 ; //调整顺序,-1为不需要调整顺序;

       }

       if (month1.equals(month2)){

        mark =  0 ;

   }

   } catch (ParseException e) {

    LOG.error( "日期转换异常" , e);

    e.printStackTrace();

   }

  return mark;

  } //compare

});

3、其他

另外java两个日期类型的对象也可以用如下方法进行比较。

?

1

2

3

4

5

6

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日期,返回的是一个布尔类型结果。

java Collections类:sort()升序排序

正向排序

使用 Collections 类的静态方法 sort() 可以对集合中的元素进行升序排序。这要求列表中的所有元素都必须实现 Comparable 接口,而且所有元素都必须是使用指定比较器可相互比较的。

sort() 方法主要有如下两种重载形式

void sort(List list) :根据元素的自然顺序对集合中的元素进行升序排序。 void sort(List list,Comparator comparator) :按 comparator 参数指定的排序方式对集合中的元素进行排序。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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()测试数据pareTo(o1.getAge());

             }

         });

         System.out.println(list.toString());

     }

}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://blog.csdn.net/weixin_40076255/article/details/90769361

查看更多关于java如何自定义List中的sort()排序,用于日期排序的详细内容...

  阅读:31次