在java编程语言中,我们知道hashcode方法的返回类型是int。因此,不能超过2 ^ 31个不同的对象。这是真的吗?如果是,那么如果我们创建超过2 ^ 31个不同的对象会发生什么?
答案 0 :(得分:1)
您很快就会有重复的哈希码,这不是问题。有一篇关于哈希码的好文章也涵盖了哈希码重复。
直接回答:你不必假装它,它只是发生了! " ..可能的不同对象的数量通常大于可能的哈希码的数量(2 ^ 32)。"
澄清:
"碰撞并不重要,它只是意味着一个存储桶中有多个对象,因此HashMap查找必须再次查找才能找到正确的对象。许多冲突会降低系统的性能,但不会导致错误的结果。"
答案 1 :(得分:0)
几个对象具有相同的哈希码是完全可以的。这么多物体不会造成任何麻烦(那里)。
试一试,然后创建一个总是返回“42”作为哈希码的类。只要您有合理equals
方法,将这些对象存储在HashMap
中就可以正常工作。
但就性能而言,建议生成广泛的哈希码。