我有一个MultiValueMap<String, String>
,假设我想按键的长度对它进行分组。
MultiValueMap<String, String> map = // Some defined MultiValueMap ...
map.entrySet().stream().collect(Collectors.groupingBy(x -> {
return x.getKey().length();
}));
问题是,我搞不清上面语句的return
类型。我试过了,例如
Map<String, Set<Map.Entry<String, List<String>>>> groupped = map.entrySet().stream().collect(Collectors.groupingBy(x -> {
return x.getKey().length();
}));
但我会得到x.getKey()
无法解决。
它应该返回Map<Integer, List<Map.Entry<String, String>>>
而不是Map<String, Set<Map.Entry<String, List<String>>>>
。
注意上面包含的String
密钥和Set<...>
值,它应该是一个Integer
密钥和一个List<...>
作为值,因为您使用的groupingBy
重载返回a:
Map<K, List<T>>
,其键是应用输入元素的分类函数,以及对应的值是包含映射的输入元素的列表到分类功能下的关联密钥。