如果不存在,则将新值放入Map中,如果不存在则添加它
我有一个关键字类Foo
的java.util.Map
。 我们来调用地图的实例。
我想将{ foo
, f
}( foo
是Foo
一个实例, f
a Double
)添加到该地图中。 但是如果键foo
已经存在,我想将f
加到该映射中的当前值。
目前我用
Double current = map.get(foo); f += current == null ? 0.0 : current; map.put(foo, f);
但是在Java 8中有没有一种时髦的方法,例如使用Map#merge
和Double::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
如果存在于Map
或0d
,否则。