Когда происходит Rehashing в HashMap

«Когда происходит Rehashing в HashMap» — вопрос из категории Java, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Rehashing в HashMap происходит при достижении порогового значения loadFactor (по умолчанию 0.75), когда количество элементов превышает capacity * loadFactor. При этом:

  1. Создается новый массив бакетов с удвоенным размером.
  2. Все существующие элементы пересчитываются (хеш-код ключа & (новый размер - 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.