根据我的理解,以及我所读到的
负载因子是衡量哈希表在其容量自动增加之前允许达到多满的度量。
因此,当加载因子为.8(80%),map大小为10时,当Map中放入8个元素时,Map将按10的大小增长。
所以,现在Map的尺寸是20,我怀疑下10个元素空间何时会被添加到Map中。
Map再次满80%时,即将16个元素放入Map中。或
Map中加入18种元素。发布于 2013-11-20 16:59:21
如果你看一下HashMap的java代码的话
threshold = (int)(newCapacity * loadFactor);新的容量就是新的尺寸。因此,您的示例中的限制将是16。
发布于 2013-11-20 16:57:42
负荷因子为80%,所以16种元素。它将根据所在元素的总量和当时的最大容量来计算调整大小。
它不会跟踪最后一次调整大小。
发布于 2013-11-20 17:05:03
HashMap有一个size()和一个capacity,这是两个不同的东西。容量是哈希表的内部大小,并且总是2的幂,所以HashMap不能有容量20。大小是用户将哈希条目放入这个映射中的数目。
当您声明HashMap时
Map map = new HashMap(20)它的实际容量是32,阈值是24。它的尺寸是零。
Map map = new HashMap()对于这种情况,映射的大小为0,默认容量为16。
阈值
threshold = (int)(newCapacity * loadFactor) = 32 * 0.8 = 25;负荷系数为0.8,为25。因此,一旦您的地图达到25个条目的大小,它将被调整为容量64,包含相同的25个条目。
https://stackoverflow.com/questions/20101999
复制相似问题