【问题标题】:Why would a higher load factor in HashMap decrease the space overhead为什么 HashMap 中较高的负载因子会降低空间开销
【发布时间】:2019-05-02 02:27:58
【问题描述】:

来自 java 文档:“作为一般规则,默认加载因子 (.75) 在时间和空间成本之间提供了良好的折衷。较高的值会减少空间开销但会增加查找成本”

为什么它会减少空间开销?桶中的额外节点不是与额外数组大小相等吗?

(最终条目的数量将相同!)

【问题讨论】:

  • 条目数与数组大小的比值负载因子。当它较高时,相对于条目数而言,额外的数组槽数较少。

标签: java hashmap


【解决方案1】:

负载因子控制地图在容量翻倍之前可以达到的满载程度。

假设您有一个理想的散列函数,可以在桶之间适当地分散。假设您有一张容量为 100 且负载因子为 0.75 的地图。这意味着当您添加元素以填充 75 个存储桶时,分配的容量会翻倍,即变为 200。因此,对于 75 个实际存储桶,您分配的容量为 200。开销即浪费的空间 = 125

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

更高的负载能力会发生相反的情况,即您浪费的空间更少。

【讨论】:

    猜你喜欢
    • 2012-08-20
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 2013-08-27
    • 2012-10-23
    相关资源
    最近更新 更多