Sobes.tech
Назад к вопросам
Junior — Middle
70

Что произойдет в HashMap, если вставить пару ключ-значение с ключом, который уже существует в карте?

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Если ключ уже есть в HashMap, то новая пара не добавится как отдельная запись. Старое значение по этому ключу будет заменено новым. При этом сам ключ в карте остается один, а операция put обычно возвращает предыдущее значение.

Определение:

HashMap хранит уникальные ключи. Если при вставке используется уже существующий ключ, структура находит текущую запись по хешу и ключу, после чего обновляет значение, связанное с этим ключом. Таким образом, дубликаты ключей в карте не появляются.

Пример использования:

import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();

        map.put("user1", "Alice");
        String oldValue = map.put("user1", "Bob");

        System.out.println(oldValue);      // Alice
        System.out.println(map.get("user1")); // Bob
    }
}

Пояснение кода:

  1. Сначала в карту добавляется ключ "user1" со значением "Alice".
  2. Затем выполняется put("user1", "Bob") с тем же ключом.
  3. HashMap находит существующую запись по этому ключу и заменяет значение "Alice" на "Bob".
  4. Метод put возвращает старое значение, поэтому в oldValue попадет "Alice".
  5. После замены get("user1") возвращает уже новое значение "Bob".

Ключевые моменты:

  • Ключи в HashMap уникальны, значения — нет.
  • При вставке с существующим ключом старое значение перезаписывается.
  • put возвращает предыдущее значение для этого ключа или null, если ключа раньше не было.
  • Дубликат записи с тем же ключом не создается.
  • Поведение зависит от корректной реализации equals() и hashCode() у ключа.