Java中ArrayList排序主要用Collections.sort()或ArrayList.sort(),依赖Comparable接口或Comparator;支持自然排序、Lambda自定义比较、null安全处理及升/降序切换。

Java 中 ArrayList 的排序主要通过 Collections.sort() 或 ArrayList.sort() 方法实现,核心依赖于元素是否实现 Comparable 接口,或传入自定义的 Comparator。
使用 Collections.sort()(推荐用于 List)
这是最常用的方式,适用于所有实现了 List 接口的集合(包括 ArrayList):
- 若元素类型(如
String、Integer)已实现Comparable,直接调用即可按自然顺序排序:
Collections.sort(list); // [1, 1, 3, 4, 5]
- 对自定义对象排序,需提供
Comparator(可使用 Lambda 表达式,简洁清晰):
Collections.sort(people, (p1, p2) -> p1.getAge() - p2.getAge()); // 按年龄升序
使用 ArrayList.sort()(JDK 8+)
这是 ArrayList 自身提供的实例方法,内部调用 Collections.sort(),用法类似:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 自然排序(要求元素实现
Comparable):
- 配合 Lambda 写法更直观:
注意 null 元素和稳定性
Collections.sort() 和 ArrayList.sort() 都是稳定排序(相等元素的相对位置不变),但默认不支持 null 值:
立即学习“Java免费学习笔记(深入)”;
- 若列表含
null,且未在Comparator中显式处理,运行时会抛NullPointerException - 安全写法:用
Comparator.nullsFirst()或Comparator.nullsLast()
升序/降序切换技巧
无需重写逻辑,只需反转比较器:
- 升序:
Comparator.naturalOrder()或省略(对基本包装类) - 降序:
Comparator.reverseOrder(),或链式调用.reversed()
people.sort(Comparator.comparing(Person::getScore).reversed()); // 按分数降序

















