如果我们创建超过2 ^ 31个不同的对象会发生什么?

时间:2016-09-30 09:44:40

标签: java hashcode

在java编程语言中,我们知道hashcode方法的返回类型是int。因此,不能超过2 ^ 31个不同的对象。这是真的吗?如果是,那么如果我们创建超过2 ^ 31个不同的对象会发生什么?

2 个答案:

答案 0 :(得分:1)

您很快就会有重复的哈希码,这不是问题。有一篇关于哈希码的好文章也涵盖了哈希码重复。

直接回答:你不必假装它,它只是发生了! " ..可能的不同对象的数量通常大于可能的哈希码的数量(2 ^ 32)。"

澄清:

"碰撞并不重要,它只是意味着一个存储桶中有多个对象,因此HashMap查找必须再次查找才能找到正确的对象。许多冲突会降低系统的性能,但不会导致错误的结果。"

来源:The 3 things you should know about hashCode()

答案 1 :(得分:0)

几个对象具有相同的哈希码是完全可以的。这么多物体不会造成任何麻烦(那里)。

试一试,然后创建一个总是返回“42”作为哈希码的类。只要您有合理equals方法,将这些对象存储在HashMap中就可以正常工作。

但就性能而言,建议生成广泛的哈希码。