HashMap默认加载因子是多少?为什么要设置成这个值?

目录

    • 一.结论(要答的内容)
      • 1.使性能与内存使用平衡
      • 2.均衡哈希分布
      • 3.减少Rehash操作
      • 4.减少碰撞
    • 二.hashmap的加载因子是什么
    • 三.rehash操作是什么

一.结论(要答的内容)

默认负载因子是0.75
原因如下:

1.使性能与内存使用平衡

负载因子在0.75时在时间成本和空间成本上做了很好的折中,如果负载因子高于这个值会提高查找成本,具体体现在大多数hashmap操作中如get,put等。而较低的值增加空间开销。
如果空间有很多而时间效率要求又很高则可以适当降低这个值。
相反如果空间紧张而时间效率效率要求不高,可以适当增加这个值。

2.均衡哈希分布

在0.75的加载因子下,哈希表的元素分布较为均匀。这有助于减少哈希冲突的发生,从而提高哈希表的性能。

3.减少Rehash操作

加载因子越小,哈希表的容量越大,元素的分布就越稀疏,哈希冲突的可能性就越小。这将减少Rehash操作的频率,从而降低因Rehash操作带来的性能开销。

4.减少碰撞

加载因子设置为0.75有助于减少哈希碰撞的发生。当哈希碰撞较少时,查找、插入和删除操作的时间复杂度可以保持在O(1),即接近常数时间。

二.hashmap的加载因子是什么

加载因子(Load Factor)反映了哈希表的填充程度,即有多少比例的哈希表槽位被填满。

加载因子是一个介于0(包括0)和1(不包括1)之间的浮点数,它表示哈希表的容量与实际存储的键值对数量之间的比率。加载因子的值越高,哈希表的填充程度越大,意味着哈希表的性能可能会降低,因为更多的哈希冲突可能导致查找、插入和删除操作的效率降低。

在HashMap的实现中,默认的加载因子是0.75。这意味着,当哈希表的实际存储的键值对数量达到其容量的75%时,会触发扩容操作。扩容操作会创建一个新的哈希表,其容量通常是原始容量的两倍,并将原始哈希表中的所有键值对重新散列到新的哈希表中。

三.rehash操作是什么

Rehash操作是哈希表(如HashMap)在运行时调整其内部数据结构大小和重新分配元素的过程。这种操作通常发生在哈希表的元素数量达到某个阈值时,以保持哈希表的性能。以下是Rehash操作的一些关键要点:

触发条件:当哈希表中的元素数量(即键值对的数量)达到其容量与加载因子的乘积时,会触发Rehash操作。例如,如果加载因子设置为0.75,而哈希表的容量为100,则当哈希表中的元素数量达到75时,就会进行Rehash。

目的:Rehash的主要目的是保持哈希表的性能。随着元素数量的增加,哈希表中的冲突可能会增加,导致性能下降。通过Rehash,哈希表可以增加其容量,从而减少冲突并提高性能。

过程:
创建一个新的、更大的哈希表。
将原始哈希表中的所有元素重新映射到新的哈希表中。这涉及到重新计算每个元素的哈希值,并将其放置在新的哈希表的正确位置。
更新引用,使原始哈希表指向新的哈希表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值