为什么HashMap 16的初始容量(2的幂)和Hashtable 11的初始容量(素数)?

nii*_*74u 7 java collections hashtable hashmap

如果您知道,请说明原因.我用Google搜索,但没有找到解释清楚的答案.

当你hashCode是负面时,是否使桶的指数为正?

Era*_*ran 8

对于HashMap,存储Map条目的数组中的索引以这种方式计算(其中hhashCode密钥的计算):

static int indexFor(int h, int length) {
    return h & (length-1);
}
Run Code Online (Sandbox Code Playgroud)

length数组的长度在哪里.

这仅在length2的幂时有效.如果length不是2的幂,则必须将此代码更改为效率较低return h % length.