lambda表达式中的sorted和Comparator实现多种方式排序
1.倒序排序
2.先后顺序排序
3.自定义排序规则
代码如下
List<Trade> sorted
= trades.stream()
.sorted(
Comparator
// 首先按照价格排序
.comparing(
Trade::getPrice,
// TODO 进行排序调整,将自然排序翻转
Comparator.reverseOrder())
// 时间先后进行排序,自然排序
.thenComparing(Trade::getTime)
// 交易量排序,自然排序翻转
.thenComparing(
Trade::getCount,
Comparator.reverseOrder())
// 自定义排序规则
.thenComparing(
// 要排序的字段值
Trade::getType,
// 自定义排序规则
(type1, type2) -> {
if ("机构".equals(type1) && "个人".equals(type2)) {
// -1:type1在先, type2在后
return -1;
} else if ("个人".equals(type1) && "机构".equals(type2)) {
return 1;
} else {
return 0;
}
}))
.collect(Collectors.toList());