list排序的几种方法

 List<Integer> list = new ArrayList<>();
 list.add(3);
 list.add(5);
 list.add(1);

Collections工具类,升序排:

Collections.sort(list);
System.out.println(list);

Console:

[1, 3, 5]

Collections工具类,降序排:

Collections.reverse(list);
System.out.println(list);

Console:

[5, 3, 1]

java8新特性,升序排:

list.sort(Integer::compareTo);
list.stream().sorted((a,b)->a.compareTo(b)).forEach(System.out::println);
list.stream().sorted(Comparator.naturalOrder()).forEach(System.out::println);
System.out.println(list);

也可以使用自定义排序如下,效果一样,不过不够简洁

list.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1-o2;
            }
        });

Console:

[1, 3, 5]

自定义排序,降序排:

 list.sort(new Comparator<Integer>() {
       @Override
       public int compare(Integer o1, Integer o2) {
           return o2-o1;
       }
 });
 list.stream().sorted((a,b)->b.compareTo(a)).forEach(System.out::println);
 list.stream().sorted(Comparator.reverseOrder()).forEach(System.out::println);
 System.out.println(list);

Console:

[5, 3, 1]

值得注意的是sorted只是创建一个流对象排序的视图,而不会改变原集合中元素的顺序。也就是说使用sorted方法原有集合的顺序实际上是没有发生变化的。

发布了54 篇原创文章 · 获赞 66 · 访问量 22万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览