集合的默认初始容量、加载因子、扩容增量

参考文章 感谢作者:@author:温柔狠角色
参考回答 感谢知道用户 @author:huitudou060606

集合的初始容量很简单,集合在创建时有一个默认的大小。

当程序集合的初始容量不够使用时,就需要去扩容。扩容就是增加容量。

加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。什么意思呢?当集合的条目数超出了加载因子与当前容量的乘积时,通过调用 rehash 方法将容量翻倍。比如,将初始容量设置为10,加载因子为0.7 那么,当容量中有7个(10 * 0.7)元素时,就会进行扩容。

此处引用:

比如说你要装水 你首先找个一个桶 这个桶的容量就是加载容量,加载因子就是比如说你要控制在这个桶中的水要不超过水桶容量的多少,比如加载因子是0.75 那么在装水的时候这个桶最多能装到3/4 处, 这么已定义的话 你的桶就最多能装水 = 桶的容量 * 加载因子
如果桶的容量是40 加载因子是0.75 那么你的桶最多能装40*0.75 = 30的水
如果你要装的水比30 多 那么就该用大一点的桶 而rehash就是负责增加桶的容量的方法

当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。

扩容增量更好理解,则是每次进行扩容空间的增量。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值