使用java流更新映射值

使用java流更新映射值,java,lambda,java-8,java-stream,Java,Lambda,Java 8,Java Stream,我需要帮助,通过使用java流来执行这个put-to-map操作,使这个为map增值的java代码变得高效 class Pair{ String key; int value; } void addtoMap(List<Pair> list){ Map<String, Integer> hashMap= new HashMap(); list.forEach(pair -> { if(hashMap.cont

我需要帮助,通过使用java流来执行这个put-to-map操作,使这个为map增值的java代码变得高效

  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]]
 
类对{
字符串键;
int值;
}
void addtoMap(列表){
Map hashMap=新hashMap();
列表。forEach(对->{
if(hashMap.containsKey(pair.key))
{
int p=hashMap.get(pair.key);
hashMap.put(pair.key,p+pair.value)
}
其他的
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]]

您可以使用
收集器。toMap

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

您可以使用
收集器。toMap

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

Nice解决方案。lambda
(v1,v2)->v1+v2也可以替换为
Integer::sum
。Nice解决方案。lambda
(v1,v2)->v1+v2
也可以替换为
Integer::sum