作者:赵丶宇森 | 来源:互联网 | 2022-12-18 13:46
我有一个HashMap
:
HashMap hmap = new HashMap<>();
我想在哪里增加HashMap值.为了避免nullPointer Exception
如果密钥不存在,我检查一下!假设数据是:
//201803271 - 1000
//201803271 - 1000
//201803272 - 1000
//inside a loop i read the data...
if (hmap.get("201803271") != null) {
hmap.put("201803271", hmap.get("201803271") + 1000);
}else{
hmap.put("201803271", 1000);
}
//end of loop
这是有效的:
201803271 - 2000
201803272 - 1000
但是,我读了这个问题如何在java hashmap中给出一个键来更新一个值?并且有一个使用Java 8方法的解决方案getOrDefault
.我尝试过这个
hmap.put("201803271", count.getOrDefault("201803271", 1000) + 1000)
但是,有了这个解决方案我得到错误的结果......
201803271 - 3000
201803272 - 2000
我错过了什么?
1> Misha..:
Java 8引入merge
了Map
仅针对此类问题进行接口的方法:
hmap.merge("201803271", 1000, Integer::sum);
这意味着"为此密钥设置1000,但如果此密钥已经有值,则为其添加1000".
您的解决方案无法正常工作的原因是您默认获得1000,然后向其中添加1000.要正确执行此操作getOrDefault
,您需要将0替换为0 in getOrDefault
.hmap.put("201803271", count.getOrDefault("201803271", 0) + 1000))