如果不存在,则将新值放入Map中,如果不存在则添加它

我有一个关键字类Foojava.util.Map 。 我们来调用地图的实例。

我想将{ foof }( fooFoo一个实例, f a Double )添加到该地图中。 但是如果键foo已经存在,我想将f加到该映射中的当前值。

目前我用

 Double current = map.get(foo); f += current == null ? 0.0 : current; map.put(foo, f); 

但是在Java 8中有没有一种时髦的方法,例如使用Map#mergeDouble::sum

遗憾的是,我无法弄明白。

谢谢。

这就是地图上的合并function。

 map.merge(foo, f, (f1, f2) -> f1 + f2) 

这可以进一步减少到

 map.merge(foo, f, Double::sum) 

它基本上相当于

 if(map.contains(foo)){ double x = map.get(foo); map.put(foo, x + f) } else { map.put(foo, f) } 

你可以做:

 map.put(foo, f + map.getOrDefault(foo, 0d)); 

这里的将是对应于foo如果存在于Map0d ,否则。