【发布时间】:2017-06-12 23:25:53
【问题描述】:
Java API - 类对象
哈希码:
如果根据 equals(java.lang.Object) 方法,如果两个对象不相等,则不需要对两个对象中的每一个调用 hashCode 方法都必须产生不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同的整数结果可能会提高哈希表的性能。
如果两个对象可以产生不同的整数结果,那么通过散列可以实现什么一致性?两个不同的对象可以返回相同的哈希值似乎很奇怪。
【问题讨论】:
-
哈希冲突是哈希的重要组成部分,这是没有无限内存的问题之一。
-
哈希码是大值空间到小得多的值空间的映射。没有唯一性的含义。
-
唯一性是相对术语。如果我们谈论的是真正唯一的对象,那么它是由它的内存地址定义的。如果我们谈论的是散列集合的唯一性,那么它是由散列码和 equals 方法的组合定义的,没有什么能阻止两个不同的对象具有相同的散列码和 equals 方法。