
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
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。