- 初始值不等同于容量值.也可能等, 比如值刚好是 2^n.
- 参考gauva实现,可以使用公式计算出合理的估值: initCapacity=needed * 10 / 7 + 1
- <===> c = n * 0.7 + 1 == n*10/7 +1
- 初始容量估算出来后,会使用该值作为参考,取该值大一号的2的指数值的值作为真实的容量.
容量 0.7 计算可能无法除尽, 因此加1便能保证计算的容量必然是保证不触发扩容机制,也就是默认的实际容量的70%.
空间换时间: 因为保证了容量能装下数据不触发扩容,因此, 空间必然是有所浪费的.
比如需要装6对kv值, 6*10/7+1 => 9 8不够装, 6/8=0.75 > 0.7 导致扩容; 6/9=0.666666 < 0.7 不扩容; 此时容量设置为了16 . (2^3=8 , 2^4=16)