为什么在HashMap中使用更高的负载因子会减少空间开销

时间:2018-11-29 23:10:46

标签: java hashmap

摘自Java文档:“通常,默认负载因子(.75)在时间和空间成本之间提供了很好的折衷。较高的值会减少空间开销,但会增加查找量费用”

为什么减少空间开销?是不是存储桶中的额外节点与额外阵列大小的大小相等?

(最后的条目数将是相同的!)

1 个答案:

答案 0 :(得分:0)

加载因子控制着地图在容量增加一倍之前的填充程度。

让我们假设您具有理想的哈希函数,并且在各个存储桶之间具有适当的分散性。假设您有一张容量为100且负载系数为0.75的地图。这意味着,当您添加元素以填充75个存储桶时,其分配的容量将增加一倍,即变为200。因此,对于75个实际存储桶,您已分配了200的容量。开销(即浪费的空间= 125

现在,假设我们有另一张地图,其容量为100,负载系数为0.5。这意味着,当地图填充50个实际存储区时,其容量将增加一倍。因此,对于50个条目,现在的容量为200。开销= 150。

如果负载能力较高,则情况正好相反,即您浪费的空间更少。