java中对arraylist排序最常用方式是collections.sort()配合comparator,升序可直接调用,降序可用collections.reverseorder()、lambda或方法引用;自定义对象按字段排序用comparator.comparingint等;stream api可生成新排序列表。

Java 中对 ArrayList 进行升序或降序排序,最常用、最推荐的方式是使用 Collections.sort() 配合 Comparator(升序可直接用自然顺序,降序需自定义比较逻辑);Java 8 起也可用 Stream API 实现更简洁的写法。
对 Integer、String 等天然可比较类型的 ArrayList 升序排序
这些类型实现了 Comparable 接口,可直接调用 Collections.sort(list):
ArrayList<integer> list = new ArrayList(Arrays.asList(5, 2, 8, 1)); Collections.sort(list); // 升序:[1, 2, 5, 8] </integer>
对同一类型进行降序排序
有三种常用方式,任选其一即可:
- 用
Collections.reverseOrder()(最简洁):Collections.sort(list, Collections.reverseOrder()); - 用 Lambda 表达式(推荐,语义清晰):
Collections.sort(list, (a, b) -> b.compareTo(a)); - 用方法引用(Java 8+):
Collections.sort(list, Integer::compareTo);是升序,降序写成Collections.sort(list, (a, b) -> b.compareTo(a))或Collections.sort(list, Comparator.reverseOrder());
对自定义对象(如 Person)按某字段排序
假设 Person 类有 name 和 age 字段,想按年龄升序:
- 升序:
Collections.sort(list, Comparator.comparingInt(p -> p.age)); - 降序:
Collections.sort(list, Comparator.comparingInt(p -> p.age).reversed()); - 多级排序(先按 age 升序,age 相同再按 name 降序):
Collections.sort(list, Comparator.comparingInt(p -> p.age).thenComparing(p -> p.name, Comparator.reverseOrder()));
用 Stream API(不修改原列表,返回新排序列表)
适合函数式风格或需要保留原始顺序的场景:
- 升序:
List<integer> sorted = list.stream().sorted().collect(Collectors.toList());</integer> - 降序:
List<integer> sorted = list.stream().sorted(Collections.reverseOrder()).collect(Collectors.toList());</integer> - 按对象字段:
List<person> sorted = list.stream().sorted(Comparator.comparingInt(p -> p.age)).collect(Collectors.toList());</person>
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











