Java中的Collections.sort()使用

2019-10-24  本文已影响0人  rainingfall

在最近的开发中,需要对一些数据对象按照某一规则进行排序的操作,由于对象实例一般都是存放在List、Map等集合中,自然想到使用Collections类中的sort方法来对既定集合进行排序。下面通过Person类按照年龄age属性的排序来说明Collections.sort的一般使用方法

1、基础的Person类

    Person类

2、一般的输出

不进行排序的List集合

输出结果:

[Person [age=25, name=张三], Person [age=24, name=王五], Person [age=30, name=李四]]

结果很显然,List集合中的对象是无序对象。

3、增加Comparable接口的Person类并进行排序

使用Collections.sort()进行排序

在上述测试函数中,增加Collections.sort(personList);编译器会告知Person需要实现Comparable接口

为Person类实现Comparable接口,并实现Comparable接口的compareTo方法

compareTo方法的返回值

输出结果

[Person [age=24, name=王五], Person [age=25, name=张三], Person [age=30, name=李四]]

4、无法改变源文件的类如何进行排序

有些情况,在使用第三方jar包时或者给定类不希望增加接口时,如何通过进行排序?Colletions类中也提供了另外一种方式来进行排序,即通过Comparator来实现

Comparator实现

输出结果

[Person [age=24, name=王五], Person [age=25, name=张三], Person [age=30, name=李四]]

5、comparator 以及 comparable的区别

comparator:基础类(Person类)不需要进行修改,符合POJO风格,比较方法由排序者自行定义,便于扩展

comparable接口:基础类通过实现接口方法设定既定排序,扩展性差,与基础类耦合度太高

欢迎加入微信公众号

上一篇 下一篇

猜你喜欢

热点阅读