list排序的几种方法

柔情只为你懂 2022-01-20 16:09 352阅读 0赞
  1. List<Integer> list = new ArrayList<>();
  2. list.add(3);
  3. list.add(5);
  4. list.add(1);

Collections工具类,升序排:

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

Console:

  1. [1, 3, 5]

Collections工具类,降序排:

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

Console:

  1. [5, 3, 1]

java8新特性,升序排:

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

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

  1. list.sort(new Comparator<Integer>() {
  2. @Override
  3. public int compare(Integer o1, Integer o2) {
  4. return o1-o2;
  5. }
  6. });

Console:

  1. [1, 3, 5]

自定义排序,降序排:

  1. list.sort(new Comparator<Integer>() {
  2. @Override
  3. public int compare(Integer o1, Integer o2) {
  4. return o2-o1;
  5. }
  6. });
  7. list.stream().sorted((a,b)->b.compareTo(a)).forEach(System.out::println);
  8. list.stream().sorted(Comparator.reverseOrder()).forEach(System.out::println);
  9. System.out.println(list);

Console:

  1. [5, 3, 1]

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

补充: 针对集合中存在null的几种排序及测试结果。

  1. @Test
  2. public void sort() {
  3. List<Integer> list = Lists.newArrayList();
  4. list.add(1);
  5. list.add(3);
  6. list.add(2);
  7. list.add(null);
  8. Ordering<Comparable> natural = Ordering.natural();
  9. Collections.sort(list, natural.nullsLast());
  10. System.out.println("list = " + list);
  11. // list = [1, 2, 3, null]
  12. Collections.sort(list, natural.nullsFirst());
  13. System.out.println("list = " + list);
  14. // list = [null, 1, 2, 3]
  15. list.removeIf(e -> Objects.isNull(e));
  16. Collections.sort(list);
  17. System.out.println("list = " + list);
  18. // list = [1, 2, 3]
  19. }

发表评论

表情:
评论列表 (有 0 条评论,352人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java中List排序3方法

    在某些特殊的场景下,我们需要在 Java 程序中对 List 集合进行排序操作。比如从第三方接口中获取所有用户的列表,但列表默认是以用户编号从小到大进行排序的,而我们的系统需要

    相关 Java中List排序3方法

    > Java中List排序方法其实有六种,今天先讲其中是三种。在某些特殊的场景下,我们需要在 Java 程序中对 List 集合进行排序操作。比如从第三方接口中获取所有用户的列

    相关 排序方法

    1、冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个

    相关 实现数组排序方法

    冒泡排序 这里先介绍一下冒泡排序。 1. 其原理就是相邻的两个元素进行比较,如果第一个元素大于第二个元素,则交换这两个元素的位置。如此两两比较然后交换,一轮下来,最大的元