当HashSet的初始容量(即16)被填满时,如何计算新容量?公式是什么?

Nil*_*cha 3 java collections hashset

当HashSet的初始容量(即16)被填满时,如何计算新容量?公式是什么?

例如:随着数组列表的大小增加公式New capacity =(current capacity*3/2)+ 1

对于向量,它是新容量=(当前容量*2)

the*_*war 7

HashSet容量doubled负荷率时(0.75)为止.

正如文档所述:

加载因子是在自动增加容量之前允许哈希表获取的完整程度的度量.当哈希表中的条目数超过加载因子和当前容量的乘积时,哈希表将被重新哈希(即,重建内部数据结构),以便哈希表具有大约 两倍的桶数.

例:

初始容量HashSet16.当(0.75)达到负载系数时,即16 * 0.75 = 12; 在插入12th元素时,容量是doubled,即它32.


Jim*_*son 0

AHashSet由 a 支持HashMap。根据grepcode,每次需要增加时,大小都会加倍。以下是该方法的代码addEntry,该方法是实际在表中添加新条目时调用的内部方法。

 void addEntry(int hash, K key, V value, int bucketIndex) {
     Entry<K,V> e = table[bucketIndex];
     table[bucketIndex] = new Entry<K,V>(hash, key, value, e);
     if (size++ >= threshold)
         resize(2 * table.length);
 }
Run Code Online (Sandbox Code Playgroud)

请注意,这是一个实现细节,可能随时更改。

另请注意,如果您需要的信息不在 Javadoc(即实现细节)中,当您对某些库类的工作原理有疑问时,查看源代码始终应该是您的首要资源。