2

为什么任何 Int 上的 Scala 方法 hashCode() 返回相同的数字

4

1 回答 1

12

因为这就是定义整数的 hashCode 的方式。

它很好地履行了合同:

  • 如果根据方法两个对象相等equals(Object),则对两个对象中的每一个调用该hashCode方法必须产生相同的整数结果。

最重要的是,它遵守建议

  • 不要求如果两个对象根据equals(java.lang.Object)方法不相等,则对两个对象中的每一个调用该hashCode方法必须产生不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同的整数结果可能会提高哈希表的性能

事实上,这是一个完美哈希函数的例子。

于 2012-08-03T07:50:13.097 回答