首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地图负载因子,地图是如何增长的

地图负载因子,地图是如何增长的
EN

Stack Overflow用户
提问于 2013-11-20 16:54:11
回答 4查看 246关注 0票数 0

根据我的理解,以及我所读到的

负载因子是衡量哈希表在其容量自动增加之前允许达到多满的度量。

因此,当加载因子为.8(80%),map大小为10时,当Map中放入8个元素时,Map将按10的大小增长。

所以,现在Map的尺寸是20,我怀疑下10个元素空间何时会被添加到Map中。

  • Map再次满80%时,即将16个元素放入Map中。

  • Map中加入18种元素。
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-11-20 16:59:21

如果你看一下HashMap的java代码的话

代码语言:javascript
复制
threshold = (int)(newCapacity * loadFactor);

新的容量就是新的尺寸。因此,您的示例中的限制将是16。

票数 1
EN

Stack Overflow用户

发布于 2013-11-20 16:57:42

负荷因子为80%,所以16种元素。它将根据所在元素的总量和当时的最大容量来计算调整大小。

它不会跟踪最后一次调整大小。

票数 1
EN

Stack Overflow用户

发布于 2013-11-20 17:05:03

HashMap有一个size()和一个capacity,这是两个不同的东西。容量是哈希表的内部大小,并且总是2的幂,所以HashMap不能有容量20。大小是用户将哈希条目放入这个映射中的数目。

当您声明HashMap

代码语言:javascript
复制
Map map = new HashMap(20)

它的实际容量是32,阈值是24。它的尺寸是零。

代码语言:javascript
复制
Map map = new HashMap()

对于这种情况,映射的大小为0,默认容量为16。

阈值

代码语言:javascript
复制
threshold = (int)(newCapacity * loadFactor) = 32 * 0.8 = 25;

负荷系数为0.8,为25。因此,一旦您的地图达到25个条目的大小,它将被调整为容量64,包含相同的25个条目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20101999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档