任何Int上的Scala方法hashCode()都是相同的数字?

alo*_*war 2 scala

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

aio*_*obe 12

因为这是定义整数的hashCode.

它很好地履行了合同:

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

最重要的是,它遵循建议

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

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