为什么 hashcode() returns 是一个整数而不是长?
Why does hashcode() returns an integer and not long?
在java、hashcode() 方法中,returns 整数而不是长整数。有什么具体原因吗?
嗯,一个很好的理由是基于hashCode
的数据结构(HashSet
、HashMap
)使用数组来存储bin,并且数组仅限于int
指数。如果必须将 long
hashCode()
映射到 int
数组索引,您将一无所获。
使用hashCode就是有N个桶,hashCode %N决定了元素的桶,希望是1(没有冲突的hashCode)。
对于N,对于hash code,一个int完全够了;事实上,人们需要在较低的位中拥有最多的多样性;如果不使用较高的位(当 N 是 2 的幂),就会适得其反。
速度当然也是一个要求:int 在最后 CPU.
稍微好一点
在java、hashcode() 方法中,returns 整数而不是长整数。有什么具体原因吗?
嗯,一个很好的理由是基于hashCode
的数据结构(HashSet
、HashMap
)使用数组来存储bin,并且数组仅限于int
指数。如果必须将 long
hashCode()
映射到 int
数组索引,您将一无所获。
使用hashCode就是有N个桶,hashCode %N决定了元素的桶,希望是1(没有冲突的hashCode)。
对于N,对于hash code,一个int完全够了;事实上,人们需要在较低的位中拥有最多的多样性;如果不使用较高的位(当 N 是 2 的幂),就会适得其反。
速度当然也是一个要求:int 在最后 CPU.
稍微好一点