HashMap的初始容量设置为多少合适?

有6个元素,则HashMap的初始化容量应为(6/0.75 +1=9)即new HashMap(9),实际容量为比9大的最近的2的指数即16

为什么要+1 ?
因为扩容不是在插入前,而是在插入后进行的。如果我们不+1,指定为new HashMap(8),则扩容阈值为8*0.75=6
在我们插入最后一个即第6个元素后,会进行自增6变成7,7>阈值6因此会进行扩容,而我们已经没有元素需要添加了,从而造成额外的一次扩容操作
因此初始化时指定的容量应为(需要的容量/负载因子+1)
或者也可以是(需要的容量 x 1.5) 即6 x 1.5 = 9

你可能感兴趣的:(HashMap的初始容量设置为多少合适?)