【问题标题】:Update map value using java Streams [duplicate]使用java Streams更新地图值[重复]
【发布时间】:2021-04-12 21:12:34
【问题描述】:

我需要帮助,通过使用 Java 流来执行这个 put to map 操作,从而使这个 java 代码高效地为 map 添加价值

  class Pair{
    String key;
    int value;
 }


void addtoMap(List<Pair> list){
    Map<String, Integer> hashMap= new HashMap();
    list.forEach(pair -> {
        if(hashMap.containsKey(pair.key))
        {
            int p= hashMap.get(pair.key);
            hashMap.put(pair.key,p+pair.value)
        }
        else 
            hashMap.put(pair.key,pair.value);
    });
}
 

hashMap.put("a",1); [["a",1]]
hashMap.put("b",2);  [["a",1],["b",2]]
hashMap.put("a',3);  [["a",4],["b",2]]
 

【问题讨论】:

    标签: java lambda java-8 java-stream


    【解决方案1】:

    你可以使用Collectors.toMap:

    Map<String, Integer> hashMap =
        list.stream()
            .collect(Collectors.toMap(p -> p.key,
                                      p -> p.value,
                                      (v1,v2)->v1+v2));
    

    【讨论】:

    • 不错的解决方案。 lambda (v1,v2)-&gt;v1+v2 也可以替换为Integer::sum
    猜你喜欢
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 2021-02-01
    • 1970-01-01
    • 2017-08-25
    • 2021-11-07
    相关资源
    最近更新 更多