为什么hashcode()返回一个整数但不长?

时间:2018-03-26 10:20:46

标签: java arrays performance hashcode bucket

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

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:3)

使用hashCode是有N个桶,其中hashCode%N确定元素桶,希望是1(没有冲突的hashCodes)。

对于N,对于哈希码,int完全足够;事实上,人们需要在低位中拥有最多样化的东西;如果长时间不使用较高位(当N为2的幂时),则会产生反效果。

速度当然也是一个要求:int在最终CPU上略胜一筹。