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面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》