如果您知道,请说明原因。我用Google搜索,但没有找到很好的解释答案。
当你的hashCode
为负数时,是否可以使桶的索引为正?
答案 0 :(得分:8)
对于HashMap
,以这种方式计算存储Map条目的数组中的索引(其中h
是从密钥的hashCode
计算得出的):
static int indexFor(int h, int length) {
return h & (length-1);
}
其中length
是数组的长度。
仅当length
为2的幂时才有效。如果length
不是2的幂,则必须将此代码更改为效率较低的return h % length
。