Collectors.groupby的地图<字符串,列表<字符串>

Ashishkumar辛格:

原谅我,如果该解决方案是非常明显的,但我似乎无法弄清楚如何做到这一点

public static void main(String[] args) {
    Map<String, String> map = new HashMap<>();
    map.put("b1", "a1");
    map.put("b2", "a2");
    map.put("b3", "a1");
    Map<String, List<String>> mm = map.values().stream().collect(Collectors.groupingBy(m -> m));
    System.out.println(mm);
}

我想通过组基于在HashMap中值。我想输出是{a1=[b1, b3], a2=[b2]},但它目前的来临{a1=[a1, a1], a2=[a2]}

奥斯曼·d:

目前,你流过映射值(我以为是一个错字),根据您所需的输出,你应该流过的地图entrySet,并使用groupingBy基于地图值的和mapping基于地图键的下游收集器:

 Map<String, List<String>> result = map.entrySet()
            .stream()
            .collect(Collectors.groupingBy(Map.Entry::getValue,
                          Collectors.mapping(Map.Entry::getKey, 
                                        Collectors.toList())));

你也可以不通过流执行这种逻辑forEach+ computeIfAbsent

Map<String, List<String>> result = new HashMap<>();
map.forEach((k, v) -> result.computeIfAbsent(v, x -> new ArrayList<>()).add(k));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何创建列表<T>地图<字符串,T>而不是地图<字符串,列表<T >>?

Java的8炼油LAMBDA地图<字符串,列表<字符串>>将字符串地图关键要求

如何收集地图<字符串,列表<字符串>>将acheve该列表排序?

地图<字符串,地图<字符串,租车>>到列表<汽车>使用Java 8

减少地图(地图(地图(列表(字符串))))地形

Java类扩展的HashMap <字符串,地图<字符串,列表<字符串>>重写方法放不工作

Java的8流,对象的转换列表地图<字符串,将<字符串>>

Java流列表<地图<字符串,双>>基于字符串需要平均

TypeReference <地图<字符串,字符串>>(){}

字典地图认为字符串是字符串数组

转换地图<整数,字符串>地图<字符串,字符串>

地图字符串数组列表获取键和值

名单<地图<String,字符串>> VS列表<OBJECT>

将字符串转换为地图列表

在Scala中反转地图(字符串->列表)

Dart 解析字符串包含地图列表

如何名单<人>转换地图<字符串,列表<双>>,而不是地图<字符串,列表<人>>?

用groupby计算列表中的字符串开关

获得“类型不匹配:不能从转换的ArrayList <HashMap的<字符串,字符串>>将列表<地图<String,字符串>>”在实例映射列表

拼合一个地图<整数,列表<字符串>>地图<字符串,整数>用流和lambda

将字符串转换为地图

从地图生成组合字符串

来自地图对象的 Grep 字符串

地图图案矢量与字符串向量

Java的8个流地图<字符串,列表<字符串值>>为每个关键总和

一个文本文件转换为地图<字符串,列表<字符串>>使用lambda

Java的8 STREM过滤图在地图 - 地图<字符串,地图<字符串,员工>>

熊猫groupby获得最小的字符串

熊猫Groupby计算部分字符串