如何更新一个值,给定一个java hashmap中的键?

假设我们在Java中有一个HashMap<String, Integer>

如何更新(增加)字符串键的整数值,以查找每个存在的字符串?

人们可以移除并重新进场,但是开销会是一个问题。
另一种方法是只把新的一对,旧的将被替换。

在后一种情况下,如果发生与我尝试插入的新密钥相冲突的hashcode会发生什么情况? 散列表的正确行为是为它指定一个不同的位置,或者在当前存储区中创建一个列表。


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

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


Java 8方式:

您可以使用computeIfPresent方法并为其提供一个映射函数,该函数将根据现有函数调用一个新值。

例如,

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"));

或者,您可以使用merge方法,其中1是默认值,函数将现有值增加1:

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

另外,还有一些其他有用的方法,比如putIfAbsentgetOrDefaultforEach等。


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

方法put将替换现有密钥的值,并在不存在时创建它。

链接地址: http://www.djcxy.com/p/16405.html

上一篇: How to update a value, given a key in a java hashmap?

下一篇: Is a Java hashmap really O(1)?