sorted()
默认是正序排序(即从小到大或从A到Z的顺序)。如果你想要倒序排序(即从大到小或从Z到A的顺序),可以使用 Comparator.reverseOrder()
或 Comparator.reversed()
方法。
正序与倒序排序的示例
1. 正序排序(默认)
正序排序是 Stream API 中 sorted()
的默认行为:
plans = plans.stream() .sorted(Comparator.comparing(plan ->
Integer.parseInt(plan.getCurTerm())))
.collect(Collectors.toList());
2. 倒序排序
要实现倒序排序,可以使用 reversed()
方法:
plans = plans.stream()
.sorted(Comparator.comparing((PingankjRepaymentPlan plan) ->
Integer.parseInt(plan.getCurTerm())).reversed())
.collect(Collectors.toList());
结合 thenComparing
的倒序排序
如果你需要在主排序条件倒序的情况下,还需要次排序条件正序或倒序,可以这样写:
plans = plans.stream() .sorted(Comparator.comparing(plan ->
Integer.parseInt(plan.getCurTerm())).reversed()
.thenComparing(PingankjRepaymentPlan::getModifyTime)) // 次排序条件保持正序
.collect(Collectors.toList());
如果你想次排序条件也倒序,可以在 thenComparing
后面加 .reversed()
:
plans = plans.stream()
.sorted(Comparator.comparing((PingankjRepaymentPlan plan) ->
Integer.parseInt(plan.getCurTerm())).reversed()
.thenComparing(PingankjRepaymentPlan::getModifyTime).reversed())
.collect(Collectors.toList());
总结
- 正序排序:
Comparator.comparing(...)
- 倒序排序:
Comparator.comparing(...).reversed()
- 次排序条件的倒序:
thenComparing(...).reversed()