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