Sobes.tech
Junior — Middle

Можете ли да обясните вътрешната структура и работа на HashMap в езика Java?

sobes.tech AI

Отговор от AI

HashMap в Java е структура от данни за съхраняване на двойки ключ-стойност с бърз достъп чрез ключ.

Вътрешна структура:

  • HashMap използва масив от кофи (bucket array).
  • За ключа се изчислява хеш код (hashCode), който след това се преобразува в индекс на масива.
  • Във всяка кофа се съхраняват елементи с един и същ индекс, обикновено под формата на свързан списък или дърво (с Java 8, ако има много колизии).

Работа:

  • При добавяне на обект, индексът се изчислява по хеша на ключа.
  • Ако кофата е празна, елементът се поставя там.
  • Ако кофата е заета, се проверява равенството на ключовете (equals), за да се актуализира стойността или да се добави нов елемент.
  • При търсене по ключ, също се изчислява индексът и се преглеждат елементите в кофата, за да се намери съвпадение.

Пример:

HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 5);
int value = map.get("apple"); // 5

По този начин HashMap осигурява амортизирано време за достъп O(1), но при много колизии може да се деградира до O(n).