HashMap中加载因子的意义是什么?

新手上路,请多包涵

HashMap 有两个重要属性: sizeload factor 。我浏览了 Java 文档,它说 0.75f 是初始负载因子。但是我找不到它的实际用途。

有人可以描述我们需要设置负载因子的不同场景是什么以及不同情况下的一些示例理想值是什么?

原文由 Priyank Doshi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 722
2 个回答

文档 解释得很好:

HashMap 的实例有两个影响其性能的参数:初始容量和负载因子。容量是哈希表中桶的数量,初始容量只是创建哈希表时的容量。负载因子是哈希表在其容量自动增加之前允许达到多满的度量。当哈希表的条目数超过负载因子与当前容量的乘积时,哈希表将被重新哈希(即重建内部数据结构),使哈希表的桶数大约增加一倍。

作为一般规则,默认加载因子 (.75) 提供了时间和空间成本之间的良好折衷。较高的值会减少空间开销,但会增加查找成本(反映在 HashMap 类的大多数操作中,包括 get 和 put)。在设置其初始容量时应考虑映射中预期的条目数及其负载因子,以尽量减少重新哈希操作的次数。如果初始容量大于最大条目数除以负载因子,则不会发生重新散列操作。

与所有性能优化一样,最好避免过早地进行优化(即没有关于瓶颈位置的硬数据)。

原文由 NPE 发布,翻译遵循 CC BY-SA 4.0 许可协议

HashMap 的默认初始容量为 16,加载因子为 0.75f(即当前地图大小的 75%)。负载因子表示 HashMap 容量应该加倍的级别。

例如,容量和负载系数的乘积为 16 * 0.75 = 12 。这表示将第12个键值对存入 HashMap 后,其容量变为32。

原文由 user2791282 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏