时间:2018-12-09 21:12:51

标签: java java-8

我有一个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()无法解决的信息。

1 个答案:

答案 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>>,其键是应用后得到的值   输入元素的分类函数及其   对应的值是包含映射的输入元素的列表   到分类功能下的关联键。