Amos的随笔

Java/Python/Go,软件测试等等

导航

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;
    }
}

posted on 2017-08-23 18:44  AmosChen  阅读(71)  评论(0)    收藏  举报  来源