小编典典

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

all

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

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


阅读 190

收藏
2022-05-16

共1个答案

小编典典

文档很好地解释了它:

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

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

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

2022-05-16