Map<String,Map<String, List<String>>> 按照value中value的list数量进行排序,若数量相同则以value中key的中文首字母排序排序
时间: 2023-11-11 07:17:16 浏览: 111
可以使用Java8的流式操作和Comparator实现该需求。具体代码如下:
```java
// 定义要排序的Map
Map<String, Map<String, List<String>>> map = new HashMap<>();
// 使用流式操作进行排序
List<Map.Entry<String, Map<String, List<String>>>> sortedList = map.entrySet().stream()
.sorted(Comparator.comparingInt(entry -> entry.getValue().values().stream().mapToInt(List::size).sum())
.thenComparing(entry -> entry.getValue().keySet().stream().findFirst().orElse("")))
.collect(Collectors.toList());
```
上面的代码中,首先使用`stream()`方法将Map转换为流,然后使用`sorted()`方法进行排序。排序首先按照Map中value中所有List的数量之和进行升序排序,使用`comparingInt()`方法实现。如果数量相同,则按照Map中value中key的中文首字母升序排序,使用`thenComparing()`方法实现。
最后,使用`collect()`方法将排序后的结果收集到List中。排序后的List中的元素是`Map.Entry<String, Map<String, List<String>>>`类型的,可以通过`getKey()`方法获取Map中的key,通过`getValue()`方法获取Map中的value。
阅读全文