为什么Object#hashCode()返回int而不是long

dim*_*sli 20 java

为什么不:

public native long hashCode();
Run Code Online (Sandbox Code Playgroud)

代替:

public native int hashCode();
Run Code Online (Sandbox Code Playgroud)

更高的机会获得唯一的哈希码?

mat*_*t b 23

因为数组最大长度Integer.MAX_VALUE.

由于主要用于hashCode()确定将对象插入到HashMap/ 的后备数组中的哪个插槽Hashtable,因此哈希码> Integer.MAX_VALUE将无法存储在数组中.

  • -1:后备阵列几乎总是小得多,因此无论如何都需要按比例缩小.从64位缩小不会是一个问题.此外,hashCode()允许返回负值... (12认同)