Java中如何用最简洁方式判断HashMap包含指定key后执行取值累加?
HashMap数值累加的简化实现方式
针对你需要对HashMap中指定key的数值做累加的场景,Java 8及以上版本有两种非常简洁的写法,无需手动判断key是否存在:
方法1:使用getOrDefault
这是最容易理解的写法,一行即可实现和你原逻辑完全等价的效果:
fee.put("2", fee.getOrDefault("2", 0.0) + 12.00);
说明:getOrDefault方法会先查询key对应的值,如果key不存在则返回你指定的默认值(这里就是0.0),直接和需要累加的数值相加后存入即可。
方法2:使用merge(更推荐)
merge是专门为这种「存在就计算、不存在就插入」的场景设计的API,写法更简洁,语义也更清晰:
fee.merge("2", 12.00, Double::sum);
说明:这个方法的逻辑是:
- 如果key "2" 不存在,直接把12.00作为值存入
- 如果key "2" 存在,就把旧值和12.00作为参数传入第三个参数的求和函数,计算后的结果作为新值存入
注意:以上两种方法都要求JDK版本为1.8及以上,如果是更低版本的JDK,只能使用你原本的containsKey判断逻辑。
内容的提问来源于stack exchange,提问作者Alvin
相关产品推荐
相关产品推荐

