Java HashMap
uses put
插入K/V对的方法HashMap
。
可以说我用过put
方法和现在HashMap<Integer, Integer>
有一个条目key
作为 10 和value
as 17.
如果我在其中插入 10,20HashMap
由于密钥 10 相同而发生冲突,它只是用此条目替换了前一个条目。
如果钥匙碰撞HashMap
用新的 K/V 对替换旧的 K/V 对。
所以我的问题是什么时候HashMap
使用链接碰撞解决技术?
为什么没有形成linkedlist
键为 10,值为 17,20?
当您插入该对时(10, 17)
进而(10, 20)
,技术上不涉及碰撞。您只需用给定键的新值替换旧值10
(因为在这两种情况下,10 都等于 10,并且 10 的哈希码始终为 10)。
当多个键散列到同一个存储桶时,就会发生冲突。在这种情况下,您需要确保可以区分这些键。链接冲突解决是用于此目的的技术之一。
举个例子,我们假设有两个字符串"abra ka dabra"
and "wave my wand"
产生哈希码100
and 200
分别。假设数组总大小为 10,它们最终都在同一个桶中 (100 % 10
and 200 % 10
)。链接可确保无论何时map.get( "abra ka dabra" );
,您最终会得到与该键关联的正确值。对于 Java 中的哈希映射,这是通过使用equals
method.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)