Map<String,Map<String, List<String>>> 根据value中list的size排序
时间: 2023-10-14 12:17:59 浏览: 112
你可以使用Java 8 Stream API中的sorted方法和Comparator来根据value中list的size排序。以下是示例代码:
```
Map<String, Map<String, List<String>>> map = new HashMap<>();
// 假设map中已经有数据
// 根据value中list的size排序
Map<String, Map<String, List<String>>> sortedMap = map.entrySet()
.stream()
.sorted(Comparator.comparing(entry -> entry.getValue().values().stream().mapToInt(List::size).sum()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new));
```
这将返回一个新的已排序的LinkedHashMap,其中每个entry的value中的list按照它们的size进行排序。
相关问题
Map<String,Map<String, List<String>>> 根据value中list的size排序,若数量相同则以value中首字母排序
可以使用Java 8的Stream API进行排序,具体实现如下:
```java
Map<String, Map<String, List<String>>> map = ...; // 待排序的Map
Map<String, Map<String, List<String>>> sortedMap = map.entrySet().stream()
.sorted((e1, e2) -> {
int size1 = e1.getValue().values().stream().mapToInt(List::size).sum();
int size2 = e2.getValue().values().stream().mapToInt(List::size).sum();
if (size1 == size2) {
String key1 = e1.getValue().keySet().stream().findFirst().orElse("");
String key2 = e2.getValue().keySet().stream().findFirst().orElse("");
return key1.compareTo(key2);
} else {
return size2 - size1; // 按照list的size倒序排序
}
})
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> v1, LinkedHashMap::new));
```
这段代码首先将Map转换成Entry集合,然后使用Stream API进行排序。排序规则是,根据value中所有list的size之和进行倒序排序,若size相同则根据value中第一个key的字典序进行排序。最后使用collect方法将排序后的结果转换回Map,并保持插入顺序。
List<String> getOption(Map<String, Object> params); Map<String, Object> getFollowByOption(Map<String, Object> params); void sh(Map<String, Object> params); int remindCount(Map<String, Object> params); Map<String, Object> selectCal(Map<String, Object> params); List<Map<String, Object>> selectGroup(Map<String, Object> params); List<Map<String, Object>> selectValue(Map<String, Object> params);
这段代码是一个 MyBatis 的 Mapper 接口,提供了多个方法,用于从数据库中查询数据或执行操作。具体方法如下:
- getOption:返回一个字符串列表,用于前端下拉框等组件的选项。
- getFollowByOption:返回一个 Map 对象,用于根据选项查询关注的数据。
- sh:执行审核操作,没有返回值。
- remindCount:返回一个整数值,用于提醒数量的统计。
- selectCal:返回一个 Map 对象,用于查询某个统计数据。
- selectGroup:返回一个 Map 对象列表,用于按照分组查询数据。
- selectValue:返回一个 Map 对象列表,用于查询某个字段的值。
阅读全文