猿问

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

假设我们有一个HashMap<String, Integer>Java语言。

如何为找到的每个字符串更新(递增)字符串键的整数值?

可以删除并重新进入该对,但是开销将是一个问题。
另一种方法是只放置新的一对,而旧的将被替换。

在后一种情况下,如果哈希码与我要插入的新密钥发生冲突怎么办?哈希表的正确行为是为其分配一个不同的位置,或在当前存储桶中列出该列表。


当年话下
浏览 408回答 3
3回答

白板的微信

map.put(key, map.get(key) + 1);应该没事。它将更新现有映射的值。请注意,这使用自动装箱。

繁星点点滴滴

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等。

慕尼黑8549860

简化的Java 8方式:map.put(key, map.getOrDefault(key, 0) + 1);该方法使用HashMap的方法来检索键的值,但是如果无法检索该键,它将返回指定的默认值(在这种情况下为'0')。核心Java支持此功能:HashMap <K,V> getOrDefault(Object key,V defaultValue)
随时随地看视频慕课网APP

相关分类

Java
我要回答