Junior — Middle
Какво се случва вътре в HashMap, когато се добавя нов ключ-стойност?
sobes.tech AI
Отговор от AI
Когато в HashMap се вмъкне нова двойка ключ-стойност, се случва следното:
- Изчислява се хеш кодът на ключа с помощта на метода
hashCode(). - Хеш кодът се преобразува в индекс на масива (backend HashMap — масив от кошчета) чрез операция, например вземане на остатък от делението по размера на масива или битова маска.
- Ако в кошчето на този индекс няма елементи, се създава нов запис с ключ и стойност.
- Ако кошчето вече съдържа елементи (колизия), се преминава през веригата (свързан списък или дърво, ако има много елементи), за да се провери дали вече съществува такъв ключ:
- Ако ключът бъде намерен, стойността се актуализира.
- Ако ключът не съществува, се добавя нов запис към веригата.
- При достигане на определен праг на запълване (load factor) се разширява масивът и се преразпределят елементите (rehash).
Пример:
Map<String, Integer> map = new HashMap<>();
map.put("apple", 5); // Изчислява се hash("apple"), определя се индексът, вмъква се запис