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

我有一个java.util.Map<Foo, Double>钥匙型课Foo。让我们称为map的实例map

我要添加{

foof}(foo是的一个实例Foo,并且fDouble)该地图。但是,如果键foo已经存在,我想求和f该映射图中的当前值。

目前我使用

Double current = map.get(foo);

f += current == null ? 0.0 : current;

map.put(foo, f);

但是在Java 8中是否有一种时髦的方式来做到这一点,例如使用Map#mergeDouble::sum

遗憾的是我无法弄清楚。

谢谢。

回答:

这就是地图上的合并功能的作用。

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中;如果不存在,则添加新值 的全部内容, 来源链接: utcz.com/qa/432395.html

回到顶部