gpt4 book ai didi

java - 当我们尝试将不相等的对象插入到 HashSet 中时,如何解决由于相同的 hashcode 值而导致的冲突?

转载 作者:行者123 更新时间:2023-12-01 17:07:48 25 4
gpt4 key购买 nike

根据 hashcode 合约,两个不相等的对象可以包含相同的 hashcode 值。那么,如果我们使用HashSet,以对象的hashcode值作为索引来存储对象,它将如何解决过滤正确对象的冲突呢?

同样,我想知道当我们尝试将它们插入HashSet时,是否有可能通过新对象删除以前的对象,因为它们具有相同的哈希码值即使它们不相等

我是一名学习java的学生,有人可以帮我解决这个问题吗!

非常感谢

最佳答案

来自两个不同对象的相同哈希码没有问题(除非它频繁出现和/或多次出现)。

哈希算法必须能够解决这个问题,并且有多种策略可以做到这一点。一种是将具有相同哈希码的对象链接到一个列表中,列表的开头保持在哈希码产生的位置。

此外,请考虑 hashCode 的基数与 int 数据类型相同,但您的哈希表必然只有“小”范围的槽地址;因此,hashCode 总是会减少(通过一些模运算),这会产生更多冲突!

稍后

关于删除具有相同哈希码的集合元素:您可以通过跟踪(在映射中)迄今为止输入的所有哈希码值来做到这一点。但是删除其他元素将违背您的集合的目的 - 为什么首先将其添加到集合中?

关于java - 当我们尝试将不相等的对象插入到 HashSet 中时,如何解决由于相同的 hashcode 值而导致的冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24670869/

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