Java 负载因子权衡

Java load factor tradeoffs

我听说,HashMap 中的负载因子会将桶恢复到其他位置,最好将其保持在 0.75,这样当大小达到 0.75*当前容量时,桶数组将重新分配为当前容量的两倍

比如我们有容量16;当大小变为 16*0.75 = 12 时,数组会重新分配。此时,我们甚至在数组达到 16 之前就创建了额外的 16 个元素,因为它的内存效率很低。

如果它具有时间效率,它是如何变成的,或者是否有使用负载因子的权衡?

HashMap 在冲突率较低时表现最佳。容量越大,发生碰撞的可能性就越小。即同一个桶中的两个键。

为了避免高冲突率,使用了一个加载因子来确保底层数组的填充率永远不会超过 75%。

顺便说一句,与其他开销相比,数组使用的额外内存很小。