为什么 hashcode() returns 是一个整数而不是长?

Why does hashcode() returns an integer and not long?

在java、hashcode() 方法中,returns 整数而不是长整数。有什么具体原因吗?

嗯,一个很好的理由是基于hashCode的数据结构(HashSetHashMap)使用数组来存储bin,并且数组仅限于int 指数。如果必须将 long hashCode() 映射到 int 数组索引,您将一无所获。

使用hashCode就是有N个桶,hashCode %N决定了元素的桶,希望是1(没有冲突的hashCode)。

对于N,对于hash code,一个int完全够了;事实上,人们需要在较低的位中拥有最多的多样性;如果不使用较高的位(当 N 是 2 的幂),就会适得其反。

速度当然也是一个要求:int 在最后 CPU.

稍微好一点