Java List排序详解(2种主流排序方法)

Java List排序详解(2种主流排序方法)-mikechen

Java List排序常见的有2种,下面我就分别详解Java List排序的2种常见方法。

Collections排序

在日常开发中很多时候都需要对一些数据进行排序的操作,然而那些数据一般都是放在一个集合中如:ArrayList等集合中。

ArrayList是最常见最频繁我们java编程当中使用的集合类,在进行集合操作的时候会进行排序操作,提共了一个排序方法 sort()。

如下所示:

public static void main(String[] args) {
  List<String> list = new ArrayList<String>();
  list.add("beijing");
  list.add("shanghai");
  list.add("hangzhou");
  Collections.sort(list, new Comparator<String>() {
      public int compare(String str1, String str2) {

      /**
      * 升序排的话就是第一个参数.compareTo(第二个参数);
      * 降序排的话就是第二个参数.compareTo(第一个参数);
      */

      // 按首字母升序排
      // return str1.compareTo(str2);
      // 按第二个字母升序排
      char c1 = str1.charAt(1);
      char c2 = str2.charAt(1);
      return c1 - c2;
    }
  });
  System.out.println(list);
}

怎么让一个对象是 可比较的,那就需要该对象实现 Comparable<T> 接口啦,若一个类实现了Comparable接口,就意味着“该类支持排序”。

 

Stream排序

如果是 JDK 8 以上的环境,也可以使用 Stream 流进行排序。

如下所示:

public static void main(String[] args) {
        //构造一个简单的List集合
        List<Integer> list = new ArrayList(){{
            add(3);
            add(2);
            add(4);
            add(1);
        }};

        //使用Java8的Stream对集合升序
        List<Integer> listNew = list.stream().sorted().collect(Collectors.toList());
        System.out.println("升序结果:");
        listNew.forEach(item-> System.out.println(item));

        System.out.println("====================");

        //反转-升序改降序
        Collections.reverse(listNew);
        System.out.println("反转降序结果:");
        listNew.forEach(item-> System.out.println(item));
    }

其中 reversed() 表示倒序的意思,如果不使用此方法则是正序。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法