我读过一本书
“从hashcode()接收的值用作存储元素的桶号。”
我怀疑,如果桶包含多个元素(具有相同的hashcode值),那么如何区分这些元素呢?
或
有可能不止一个项目拥有相同的hashcode吗?
发布于 2015-02-13 07:26:37
通常,有两种方法可以处理两个或多个元素在哈希表中的同一个“桶”中结束的情况:
HashMap的工作原理..。尽管在Java 8中,链接列表可以是一个二叉树。我怀疑桶是否包含多个元素(具有相同的哈希代码值)。如何区分元素?
在Java中,HashMap、Hashtable和相关类使用key的equals方法来区分具有相同哈希码的键。这就是为什么我们有“哈希码/等于合同”。(请阅读这里。)
有可能不止一个项目有相同的哈希码吗?
是的是可能的。Java的标准哈希表类处理它。请参见上面的。
发布于 2015-02-13 07:25:31
多个元素可以具有相同的哈希代码。在这种情况下,将使用equals()方法检查该桶中的所有元素,以确定其中一个元素是否与您要查找的元素匹配。
发布于 2015-02-13 07:25:38
有可能有多个具有相同哈希码的元素,因为哈希码的计数是有限的。您可以通过equals()方法来区分元素。
https://stackoverflow.com/questions/28494453
复制相似问题