Map<String, TodayTradeInfoStatisDto> finalMap,TodayTradeInfoStatisDto里面有个列表字段List<TodayTradeInfoDto> tradeInfoDtoList,首先对TodayTradeInfoDto类型里面的subQuty字段降序,根据finalMap中的TodayTradeInfoStatisDto类型的字符串类型的fundRiskLevel字段降序,TodayTradeInfoStatisDto类型的BigDecimal类型的sumAmt字段降序
时间: 2024-01-13 10:03:12 浏览: 180
可以按照以下步骤实现对finalMap中的数据进行排序:
1. 使用Comparator对TodayTradeInfoDto中的subQuty字段进行降序排序,可以使用如下代码:
```
Comparator<TodayTradeInfoDto> subQutyComparator = Comparator.comparing(TodayTradeInfoDto::getSubQuty).reversed();
```
2. 使用Comparator对TodayTradeInfoStatisDto中的fundRiskLevel字段进行降序排序,可以使用如下代码:
```
Comparator<TodayTradeInfoStatisDto> fundRiskLevelComparator = Comparator.comparing(TodayTradeInfoStatisDto::getFundRiskLevel, Comparator.reverseOrder());
```
3. 使用Comparator对TodayTradeInfoStatisDto中的sumAmt字段进行降序排序,可以使用如下代码:
```
Comparator<TodayTradeInfoStatisDto> sumAmtComparator = Comparator.comparing(TodayTradeInfoStatisDto::getSumAmt, Comparator.reverseOrder());
```
4. 最后,使用Java8的Stream API对finalMap进行排序,先按照fundRiskLevel字段排序,再按照sumAmt字段排序,最后按照tradeInfoDtoList中的subQuty字段排序,可以使用如下代码:
```
finalMap.values().stream()
.sorted(fundRiskLevelComparator.thenComparing(sumAmtComparator).map(statisDto -> {
statisDto.getTradeInfoDtoList().sort(subQutyComparator);
return statisDto;
}))
.collect(Collectors.toList());
```
以上代码会返回一个排好序的List<TodayTradeInfoStatisDto>对象。
阅读全文