gpt4 book ai didi

java - Java HashMap 中的冲突解决

转载 作者:IT老高 更新时间:2023-10-28 20:24:54 24 4
gpt4 key购买 nike

Java HashMap使用 putHashMap 中插入 K/V 对的方法.假设我使用过 put方法和现在 HashMap<Integer, Integer>有一个带有 key 的条目如 10 和 value 17.

如果我在 HashMap 中插入 10,20由于相同的键 10,它只是用这个条目替换了之前的条目。

如果键碰撞 HashMap用新的 K/V 对替换旧的 K/V 对。

所以我的问题是HashMap使用链式碰撞解决技术?

为什么它没有形成 linkedlist键为 10,值为 17,20?

最佳答案

当您插入 (10, 17) 对,然后插入 (10, 20) 时,从技术上讲不涉及冲突。您只是用给定键 10 的新值替换旧值(因为在这两种情况下,10 等于 10,而且 10 的哈希码始终为 10)。

当多个键散列到同一个存储桶时会发生冲突。在这种情况下,您需要确保可以区分这些键。链式碰撞解决方案是用于此目的的技术之一。

例如,假设两个字符串 "abra ka dabra""wave my wand" 产生哈希码 100200。假设总数组大小为 10,它们最终都在同一个存储桶中(100 % 10200 % 10)。链接确保无论何时执行 map.get("abra ka dabra");,最终都会得到与键关联的正确值。对于 Java 中的 HashMap ,这是通过使用 equals 方法完成的。

关于java - Java HashMap 中的冲突解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19691920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com