本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看活动链接
给定hashmap中的键,如何更新值?
假设我们有一个HashMap<String, Integer>Java语言。
如何为找到的每个字符串更新(递增)字符串键的整数值?
一个可以删除并重新进入一对,但是开销会是一个问题。 另一种方法是只放置新的一对,而旧的将被替换。
在后一种情况下,如果哈希码与我尝试插入的新密钥发生冲突,该怎么办?哈希表的正确行为是为其分配一个不同的位置,或在当前存储桶中列出该列表。
高分回答:
map.put(key, map.get(key) + 1);
应该没事。它将更新现有映射的值。请注意,这使用自动装箱。在map.get(key)我们的帮助下,您可以获得相应密钥的值,然后您可以根据需要进行更新。在这里,我将值增加1。
高分回答:
简化的Java 8方式:
map.put(key, map.getOrDefault(key, 0) + 1);
这使用HashMap的方法来检索键的值,但是如果无法检索到键,它将返回指定的默认值(在这种情况下为'0')。
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等。
文章翻译自kgs4h5t57thfb6iyuz6dqtun5y-ac4c6men2g7xr2a-stackoverflow-com.translate.goog/questions/4…
作者建议:对传统方式很熟悉的话,建议使用map.put(key, map.getOrDefault(key, 0) + 1);
真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话
求点赞👍 求关注❤️ 求分享👥 对8块腹肌的我来说真的 非常有用!!!
如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️