Java HashMap のソース コードから、スペースのしきい値に達すると、そのスペースが 2 倍に拡張されることは明らかです。
6 つの要素すべてがリンクされた方法で同じインデックスの下に格納されるユース ケースについて考えました。7 番目の要素が到着すると、しきい値 7 (10*.75) の HashMap (サイズ 10) が展開されます。ここでは、すべてが 1 つのインデックスの下に保存されるため、実際には拡張の必要はありません。
親切に私を教えてください
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);
}
void resize(int newCapacity)
{
Entry[] oldTable = table;
int oldCapacity = oldTable.length;
if (oldCapacity == MAXIMUM_CAPACITY) {
threshold = Integer.MAX_VALUE;
return;
}
Entry[] newTable = new Entry[newCapacity];
transfer(newTable);
table = newTable;
threshold = (int)(newCapacity * loadFactor);
}