Ответ
Rehashing в HashMap происходит при достижении порогового значения loadFactor (по умолчанию 0.75), когда количество элементов превышает capacity * loadFactor. При этом:
- Создается новый массив бакетов с удвоенным размером.
- Все существующие элементы пересчитываются (хеш-код ключа & (новый размер - 1)) и перераспределяются по новым бакетам.
Пример:
val map = HashMap<Int, String>(4) // capacity=4, threshold=3 (4*0.75)
map.put(1, "a")
map.put(2, "b")
map.put(3, "c") // threshold достигнут
map.put(4, "d") // происходит rehashing, capacity становится 8
Важно: rehashing затратная операция, поэтому если заранее известно примерное количество элементов, лучше указать начальный capacity.