我有一个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()
无法解决的信息。
答案 0 :(得分:3)
它应该返回Map<Integer, List<Map.Entry<String, String>>>
而不是Map<String, Set<Map.Entry<String, List<String>>>>
。
请注意您在上面包含的String
键和Set<...>
值,它应该是一个Integer
键和一个List<...>
作为值,因为{{ 3}}您使用的返回值:
Map<K, List<T>>
,其键是应用后得到的值 输入元素的分类函数及其 对应的值是包含映射的输入元素的列表 到分类功能下的关联键。