Java 如何实现 List 排序(正序 or 反序)
List.sort()
Integer[] arrays = {22, 32, 65, 100, 88, 54, 10, 2};
List<Integer> lists = Arrays.asList(arrays);
// 传入为 null 默认为正序
lists.sort(null);
// 改写比较器接口 正序
lists.sort(Comparator.comparingInt(o -> o));
// 改写比较器接口 反序
lists.sort((o1, o2) -> o2 - o1);
Stream.sorted()
Integer[] arrays = {22, 32, 65, 100, 88, 54, 10, 2};
List<Integer> lists = Arrays.asList(arrays);
// Stream sort
// 正序
List<Integer> l1 = lists.stream().sorted().collect(Collectors.toList());
// 正序
List<Integer> l3 = lists.stream().sorted(Comparator.naturalOrder()).collect(Collectors.toList());
// 反序
List<Integer> l2 = lists.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
Collections.sort()
Integer[] arrays = {22, 32, 65, 100, 88, 54, 10, 2};
List<Integer> lists = Arrays.asList(arrays);
// Stream sort
// 正序
Collections.sort(lists);
// 反序 自定义比较器
Collections.sort(lists, (o1, o2) -> o2 - o1);
比较器写法
lambda
(o1, o2) -> o1 - o2
正序
(o1, o2) -> o2 - o1
反序
Comparator
Comparator.comparingInt(o -> o)
正序
Comparator.naturalOrder()
正序 ~ 自然顺序
Comparator.reverseOrder()
反序
实现比较器接口
正序
new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
}
反序
new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
}