Sobes.tech
Junior — Middle

Какво се случва вътре в HashMap, когато се добавя нов ключ-стойност?

sobes.tech AI

Отговор от AI

Когато в HashMap се вмъкне нова двойка ключ-стойност, се случва следното:

  1. Изчислява се хеш кодът на ключа с помощта на метода hashCode().
  2. Хеш кодът се преобразува в индекс на масива (backend HashMap — масив от кошчета) чрез операция, например вземане на остатък от делението по размера на масива или битова маска.
  3. Ако в кошчето на този индекс няма елементи, се създава нов запис с ключ и стойност.
  4. Ако кошчето вече съдържа елементи (колизия), се преминава през веригата (свързан списък или дърво, ако има много елементи), за да се провери дали вече съществува такъв ключ:
    • Ако ключът бъде намерен, стойността се актуализира.
    • Ако ключът не съществува, се добавя нов запис към веригата.
  5. При достигане на определен праг на запълване (load factor) се разширява масивът и се преразпределят елементите (rehash).

Пример:

Map<String, Integer> map = new HashMap<>();
map.put("apple", 5); // Изчислява се hash("apple"), определя се индексът, вмъква се запис