Java HashMap中的冲突解决

Java HashMap使用put方法在中插入K /

V对HashMap。可以说我使用过putmethod,现在HashMap<Integer,

Integer>有一个条目,key其值为10和value17。

如果我在其中插入10,20,HashMap由于键10相同而发生冲突,它会简单地用该条目替换之前的条目。

如果钥匙碰撞,则HashMap用新的K / V对替换旧的K / V对。

所以我的问题是何时HashMap使用Chaining冲突解决技术?

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

回答:

当您插入线对(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中的哈希映射,这是通过使用equals方法完成的。

以上是 Java HashMap中的冲突解决 的全部内容, 来源链接: utcz.com/qa/406508.html

回到顶部