热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

给定具有getOrDefault的键的更新hashmap值

如何解决《给定具有getOrDefault的键的更新hashmap值》经验,为你挑选了1个好方法。

我有一个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引入mergeMap仅针对此类问题进行接口的方法:

hmap.merge("201803271", 1000, Integer::sum);

这意味着"为此密钥设置1000,但如果此密钥已经有值,则为其添加1000".

您的解决方案无法正常工作的原因是您默认获得1000,然后向其中添加1000.要正确执行此操作getOrDefault,您需要将0替换为0 in getOrDefault.hmap.put("201803271", count.getOrDefault("201803271", 0) + 1000))


推荐阅读
author-avatar
赵丶宇森
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有