Java Stream API的sorted()方法可实现集合排序且不修改原数据。1. 基本类型如Integer、String默认按自然序升序排列;2. 自定义对象需配合Comparator,如用Comparator.comparing()按字段排序,支持thenComparing()链式比较;3. 逆序使用reversed()或Collections.reverseOrder()实现降序;4. 处理null时可用nullsFirst()或nullsLast()避免异常。

在Java中,Stream API 提供了 sorted() 方法来对集合中的元素进行排序,使用起来简洁高效。它不会修改原始集合,而是返回一个新的有序流。下面介绍几种常见的用法和技巧。
对于基本数据类型包装类(如 Integer、String 等),可以直接调用 sorted() 实现升序排列。
List
List
立即学习“Java免费学习笔记(深入)”;
.sorted()
.collect(Collectors.toList());
// 结果:[1, 2, 5, 8]
字符串列表也一样,默认按字典顺序排序:
List
List
.sorted()
.collect(Collectors.toList());
// 结果:["apple", "banana", "cherry"]
对于自定义对象,比如 Person 类,需要指定比较规则。可以通过 Comparator.comparing() 来实现。
class Person {
private String name;
private int age;
// 构造方法、getter等省略
}
List
List
.sorted(Comparator.comparing(Person::getAge))
.collect(Collectors.toList());
// 按年龄升序
支持链式比较,例如先按年龄再按姓名:
List
.sorted(Comparator.comparing(Person::getAge)
.thenComparing(Person::getName))
.collect(Collectors.toList());
使用 reversed() 可以反转排序顺序。
List
.sorted(Collections.reverseOrder())
.collect(Collectors.toList());
// 或针对特定字段
people.stream()
.sorted(Comparator.comparing(Person::getAge).reversed())
.collect(Collectors.toList());
// 按年龄降序
如果数据中可能包含 null,直接排序会抛出异常。可以使用 Comparator.nullsFirst() 或 nullsLast() 安全处理。
List
List
.sorted(Comparator.nullsFirst(String::compareTo))
.collect(Collectors.toList());
// null 排在最前面
若想把 null 放在最后:
.sorted(Comparator.nullsLast(String::compareTo))
基本上就这些常见场景。掌握 sorted 配合 Comparator 的用法,能应对大多数排序需求,代码更清晰且不易出错。以上就是在Java中如何使用sorted对集合排序_Stream排序技巧说明的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号