Map<String, Map<String, List<TodayTradeInfoDto>>>根据map中的对象字段fundRiskLevel倒序,amt降序排序
时间: 2023-10-29 14:19:21 浏览: 77
要对 Map<String, Map<String, List<TodayTradeInfoDto>>> 中的对象进行排序,按照 fundRiskLevel 字段倒序排序,如果 fundRiskLevel 相同则按照 amt 字段降序排序。下面给出一个排序的示例代码:
```java
public static Map<String, Map<String, List<TodayTradeInfoDto>>> sortMapByFundRiskLevelAndAmt(Map<String, Map<String, List<TodayTradeInfoDto>>> tradeInfoMap) {
// 用于存放排序结果的 TreeMap
TreeMap<String, Map<String, List<TodayTradeInfoDto>>> sortedMap = new TreeMap<>(Collections.reverseOrder());
// 遍历原始的 tradeInfoMap,将每个 key-value 键值对存入到 sortedMap 中
for (Map.Entry<String, Map<String, List<TodayTradeInfoDto>>> entry1 : tradeInfoMap.entrySet()) {
String key1 = entry1.getKey();
Map<String, List<TodayTradeInfoDto>> value1 = entry1.getValue();
TreeMap<String, List<TodayTradeInfoDto>> sortedValue1 = new TreeMap<>(Collections.reverseOrder());
for (Map.Entry<String, List<TodayTradeInfoDto>> entry2 : value1.entrySet()) {
String key2 = entry2.getKey();
List<TodayTradeInfoDto> value2 = entry2.getValue();
List<TodayTradeInfoDto> sortedValue2 = value2.stream()
.sorted(Comparator.comparing(TodayTradeInfoDto::getFundRiskLevel).reversed()
.thenComparing(Comparator.comparing(TodayTradeInfoDto::getAmt).reversed()))
.collect(Collectors.toList());
sortedValue1.put(key2, sortedValue2);
}
sortedMap.put(key1, sortedValue1);
}
// 返回排序结果
return sortedMap;
}
```
这里同样用到了 Java 中的 TreeMap,对于外层的 Map,我们需要将它转换成 TreeMap,并指定排序的方式为倒序。对于内层的 Map,我们同样需要将它转换成 TreeMap,并指定排序的方式为倒序。这里用到了 Java 8 中的流式编程,对 List 中的元素按照 fundRiskLevel 字段倒序排序,如果 fundRiskLevel 相同则按照 amt 字段降序排序。最后将排序结果存入到 sortedMap 中并返回即可。
阅读全文