浅析Java中的Collections.sort排序

Collections类中的sort方法可以对实现了List接口的集合进行排序。这个方法假定列表元素实现了Comparable接口。

查看Java官方文档可知,sort方法有两种重载形式。第一种重载是:

static <T extends Comparable<? super T>> void sort(List<T> list)

这个方法将列表元素进行升序排序,但是列表要满足以下条件:

1.列表元素实现了Comparable接口,且任意两个列表元素都是可比的。
  2.列表必须支持set方法。

//升序排序
Collections.sort(list);

用sort方法能否进行降序排序?

这种方法需要用到sort方法的第二种重载形式:

public static <T> void sort(List<T> list,Comparator<? super T> c)

如果想采用其他方式进行排序,那么可将一个Comparator对象作为sort方法的第二个参数。当要进行逆序排序时,最简便的方法是将Collections.reverseOrder()作为第二个参数。

//逆序排序
Collections.sort(list,Collections.reverseOrder());

总结:

1.对于String或Integer这些已经实现Comparable接口的类来说,可以直接使用Collections.sort方法传入list参数来实现默认方式(正序)排序;

2.如果不想使用默认方式(正序)排序,可以通过Collections.sort传入第二个参数类型为Comparator来自定义排序规则;

3.对于自定义类型(如本例子中的Emp),如果想使用Collections.sort的方式一进行排序,可以通过实现Comparable接口的compareTo方法来进行,如果不实现,则参考第2点;

4.jdk1.8的Comparator接口有很多新增方法,其中有个reversed()方法比较实用,是用来切换正序和逆序的。

可参考阅读:https://www.cnblogs.com/yw0219/p/7222108.html

发布了254 篇原创文章 · 获赞 23 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_30242987/article/details/104696484