gpt4 book ai didi

java HashMap 冲突

转载 作者:IT老高 更新时间:2023-10-28 21:08:04 26 4
gpt4 key购买 nike

我正在阅读有关 hashmap 的工作原理。我正在阅读 "What will happen if two different objects have same hashcode" .

根据它,如果两个对象具有相同的哈希码,两者都将存储在 LinkedList 但据我所知,如果两个哈希码,那么前一个哈希码将被新的覆盖(如果我错了,请纠正我)。

有人可以详细说明一下 hashmap 如何在内部使用对象作为键,如果两个对象具有相同的 hashcode 会发生什么,以及如何使用 get() 获取这两个对象?

最佳答案

不,第一个不会因为第二个具有相同的 hashCode 而被覆盖。

只有当它也相等时才会被覆盖(如 equals 所说)。如果没有,这两个值都将保存在链表中。

当获取一个键时,所有具有相同 hashCode 的节点将与提供的键进行比较,直到一个相等,然后返回它的值(使用 equals 方法)。

如果 map 中没有相同的键,你会得到 null

如果许多对象具有相同的 hashCode(或者更准确地说是相同的 hashCode 以内部 Entry[] 表的大小为模),那么唯一的问题是总是会读取链表,这更慢(并且破坏了任何哈希表的目的)。这就是为什么在设计 hashcode 方法以确保生成的整数分布良好时很重要的原因。

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

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