在java中,hashcode()方法返回整数而不是long。有什么具体原因吗?
答案 0 :(得分:8)
嗯,一个很好的理由是基于hashCode
的数据结构(HashSet
,HashMap
)使用数组来存储二进制数,并且数组仅限于int
指数。如果您必须将其映射到long
数组索引,则hashCode()
int
将无法获得任何结果。
答案 1 :(得分:3)
使用hashCode是有N个桶,其中hashCode%N确定元素桶,希望是1(没有冲突的hashCodes)。
对于N,对于哈希码,int完全足够;事实上,人们需要在低位中拥有最多样化的东西;如果长时间不使用较高位(当N为2的幂时),则会产生反效果。
速度当然也是一个要求:int在最终CPU上略胜一筹。