Java HashMap中的冲突解决
Java HashMap
使用put
方法在中插入K /
V对HashMap
。可以说我使用过put
method,现在HashMap<Integer,
Integer>有一个条目,key
其值为10和value
17。
如果我在其中插入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"产量哈希码100
和200
分别。假设数组的总大小为10,则它们都以相同的存储桶(100 % 10
和200 %
10)结尾。链接可确保您每次执行操作时map.get( "abra ka dabra"
);,最终都能获得与键关联的正确值。对于Java中的哈希映射,这是通过使用equals
方法完成的。
以上是 Java HashMap中的冲突解决 的全部内容, 来源链接: utcz.com/qa/406508.html