Junior — Middle
88
Kuidas lisatakse element HashMap-i, kui võtmete kokkupõrge toimub?
Ettevõtted, kust küsiti
Vastus AI-lt
sobes.tech AI
В Java при добавлении элемента в HashMap, если возникает коллизия ключей (то есть два ключа имеют одинаковый хэш-код или попадают в один бакет), происходит следующее:
- HashMap хранит элементы в виде цепочки (связного списка) или дерева (начиная с Java 8, если цепочка становится длинной).
- Новый элемент добавляется в конец цепочки в соответствующем бакете.
- Если цепочка становится слишком длинной, она преобразуется в сбалансированное дерево (TreeNode) для ускорения поиска.
Таким образом, коллизии обрабатываются методом цепочек (chaining), что позволяет хранить несколько элементов с одинаковым индексом бакета.
Пример (упрощённо):
int bucketIndex = key.hashCode() % table.length;
Node existing = table[bucketIndex];
while (existing != null) {
if (existing.key.equals(key)) {
existing.value = newValue; // обновление
return;
}
existing = existing.next;
}
// добавляем новый узел в начало или конец цепочки