Junior — Middle
HashMap içinde yeni anahtar-değer çifti eklendiğinde ne olur?
sobes.tech yapay zeka
AI'dan gelen yanıt
Когда в HashMap вставляется новая пара ключ-значение, происходит следующее:
- Вычисляется хэш-код ключа с помощью метода
hashCode(). - Хэш-код преобразуется в индекс массива (бэкенд HashMap — массив бакетов) с помощью операции, например, взятия остатка по размеру массива или битовой маски.
- Если в бакете по этому индексу нет элементов, создаётся новая запись с ключом и значением.
- Если бакет уже содержит элементы (коллизия), происходит обход цепочки (связного списка или дерева, если элементов много) для проверки, есть ли уже такой ключ:
- Если ключ найден, значение обновляется.
- Если ключа нет, новая запись добавляется в цепочку.
- При достижении определённого порога заполнения (load factor) происходит расширение массива и перераспределение элементов (rehash).
Пример:
Map<String, Integer> map = new HashMap<>();
map.put("apple", 5); // Вычисляется hash("apple"), определяется индекс, вставляется запись