今天的leetcode每日一题遇到了需要用这个方法排序,好久没用都忘了,记录一下。
Collections排序接口分为两种,一种是实现过它的,另外一种是没有实现过的。
第一种:实现过Collection的接口
例如Arraylist(),看下方的源码我们可以知道ArrayList实现了List接口,而list接口实现了Collection,相当于Arraylist()实现了Collection;
image.png
那么list就能通过 Collections.sort(list)进行排序,而且还可以通过重写Collection中的compare()方法自定义排序顺序
List<Integer> list = new ArrayList<>();
list.add(2);
list.add(1);
list.add(3);
Collections.sort(list);//默认是升序排列
System.out.println(list); // 1 2 3
//重写compare方法
Collections.sort(list,new Comparator<Integer>() {
/**
*升序排列是 o1 - o2
*降序排列则反之
**/
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
System.out.println(list); // 3 2 1
第二种:没有实现过Collection接口
没有实现过Collection接口的东西需要怎么排序呢,我们可以新建一个比较器,这个比较器只需要实现Comparator接口即可。
详情请看这里
--下次有空再补上
网友评论