HashMap 默认指定大小为16,负载因子为0.75
其实这屌毛HashMap 大小可以指定的,必须指定为2的n次幂,若指定非2的n次幂,会自动设置为比设置的值大的2的n次幂(至于为什么是2的n次幂,下次补充)
比如设置为3时,haspMap 自动设置为4 ,设置为7时,HashMap 自动设置为8, 设置为100或者120时,hashMap 会自动设置为128,原因如下代码
static final int tableSizeFor(int cap) {
int n = cap - 1;
n |= n >>> 1;
n |= n >>> 2;
n |= n >>> 4;
n |= n >>> 8;
n |= n >>> 16;
return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
}