为了账号安全,请及时绑定邮箱和手机立即绑定

给定哈希图中的键,如何更新值?

给定哈希图中的键,如何更新值?

当年话下 2020-02-03 14:30:42
假设我们有一个HashMap<String, Integer>Java语言。如何为找到的每个字符串更新(递增)字符串键的整数值?可以删除并重新进入该对,但是开销将是一个问题。另一种方法是只放置新的一对,而旧的将被替换。在后一种情况下,如果哈希码与我要插入的新密钥发生冲突怎么办?哈希表的正确行为是为其分配一个不同的位置,或在当前存储桶中列出该列表。
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

map.put(key, map.get(key) + 1);

应该没事。它将更新现有映射的值。请注意,这使用自动装箱。


查看完整回答
反对 回复 2020-02-03
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

Java 8方式:

您可以使用computeIfPresentmethod并为其提供一个映射函数,该函数将被调用以基于现有值计算一个新值。


例如,


Map<String, Integer> words = new HashMap<>();

words.put("hello", 3);

words.put("world", 4);

words.computeIfPresent("hello", (k, v) -> v + 1);

System.out.println(words.get("hello"));

或者,您可以使用mergemethod,其中1为默认值,函数将现有值增加1:


words.merge("hello", 1, Integer::sum);

此外,有一堆其他有用的方法,例如putIfAbsent,getOrDefault,forEach等。


查看完整回答
反对 回复 2020-02-03
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

简化的Java 8方式:


map.put(key, map.getOrDefault(key, 0) + 1);

该方法使用HashMap的方法来检索键的值,但是如果无法检索该键,它将返回指定的默认值(在这种情况下为'0')。


核心Java支持此功能:HashMap <K,V> getOrDefault(Object key,V defaultValue)


查看完整回答
反对 回复 2020-02-03
  • 3 回答
  • 0 关注
  • 407 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信