在 Java 中,使用 Comparator 反转顺序有多种常见方式,下面按推荐程度和使用场景说明。
Comparator.reversed()(最推荐 ✅)这是 Java 8 引入的最简洁、最安全的方式。
List<Integer> list = Arrays.asList(3, 1, 2);
list.sort(Comparator.naturalOrder()); // 升序
list.sort(Comparator.reverseOrder()); // 降序
List<Student> students = ...;
// 按年龄升序
students.sort(Comparator.comparing(Student::getAge));
// 按年龄降序
students.sort(Comparator.comparing(Student::getAge).reversed());
如果你已经有一个 Comparator,直接调用 reversed():
Comparator<Student> byName = Comparator.comparing(Student::getName);
Comparator<Student> byNameDesc = byName.reversed();
✅ 注意:reversed() 返回的是新的 Comparator,原 Comparator 不变。
Comparator<Integer> desc = (a, b) -> b.compareTo(a);
或:
Comparator<Integer> desc = (a, b) -> {
if (a > b) return -1;
if (a < b) return 1;
return 0;
};
⚠️ 容易写错,且不支持 null 安全。
students.sort(
Comparator
.comparing(Student::getGrade) // 升序
.thenComparing(
Comparator.comparing(Student::getAge).reversed() // 年龄降序
)
);
null 处理如果字段可能为 null:
Comparator.comparing(Student::getName, Comparator.nullsLast(Comparator.naturalOrder()))
.reversed();
| 方式 | 推荐度 |
|---|---|
Comparator.reverseOrder() |
⭐⭐⭐⭐⭐ |
comparator.reversed() |
⭐⭐⭐⭐⭐ |
| 手动 reverse | ⭐ |
如果你有具体对象或排序场景(如 Map、Stream、自定义类),可以贴代码,我可以帮你写完整示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。