有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
版权声明:本文为weixin_42827159原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。