在LambdaQueryWrapper多字段排序再线程池处理List的场景中,需要对处理后的数据重排序,因为线程池中item的执行并不是顺序的,所以会导致List中item排序错乱。
本文使用Comparator实现List的重排序。
sort.java
1 | // 查询所有的链信息 |
Tips:
- 如果是一个字段的排序,可以这样使用
1
2
3 chainInfoList.sort(Comparator.comparing(ChainInfo::getChainId).reversed());
// 或
chainInfoList.sort(Comparator.comparing(ChainInfo::getChainId, Comparator.reverseOrder()));
如果是多个字段的排序,不能使用reversed(),必须使用Comparator.reverseOrder()。
1
2
3
4
5
6
7chainInfoList.sort(
Comparator.comparing(ChainInfo::getWeight)
.thenComparing(ChainInfo::getChainId, Comparator.reverseOrder()));
// 如果 weight 也是递减
chainInfoList.sort(
Comparator.comparing(ChainInfo::getWeight, Comparator.reverseOrder())
.thenComparing(ChainInfo::getChainId, Comparator.reverseOrder()));