Sobes.tech
Junior — Middle
106

Hoe wordt de situatie afgehandeld wanneer er een botsing van sleutels optreedt bij het gebruik van Bucket in HashMap?

Bedrijven waar gevraagd werd
AstonAston

Antwoord van AI

sobes.tech AI

В Java HashMap для обработки коллизий используется структура данных, называемая бакетом (bucket), которая изначально представляет собой связный список элементов с одинаковым хешем.

Когда два ключа имеют одинаковый хеш (коллизия), оба помещаются в один бакет. При поиске или вставке происходит перебор элементов этого бакета для сравнения ключей с помощью метода equals().

Начиная с Java 8, если количество элементов в бакете превышает определённый порог (обычно 8), связный список преобразуется в сбалансированное дерево (TreeMap) для ускорения поиска с O(n) до O(log n).

Пример:

HashMap<String, Integer> map = new HashMap<>();
map.put("key1", 1);
map.put("key2", 2); // если key1 и key2 имеют одинаковый хеш, они будут в одном бакете
Integer value = map.get("key1"); // перебор элементов бакета для поиска ключа