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

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

Компании, где спрашивали
ГазпромбанкГазпромбанк

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

sobes.tech AI

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

HashMap в Java допускает один ключ null. При вставке записи с null-ключом она будет храниться в специальной корзине, а повторная вставка с тем же ключом просто перезапишет значение. При чтении по null вернётся соответствующее значение.

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

HashMap может содержать ровно одну запись с ключом null. Это отличается от многих других коллекций и от Hashtable, где null-ключи запрещены. Для null-ключа HashMap не вычисляет hashCode() у ключа, а обрабатывает его отдельно.

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

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(null, "default-value");
        map.put("name", "Alex");
        map.put(null, "updated-value"); // перезапишет значение для null-ключа

        System.out.println(map.get(null));   // updated-value
        System.out.println(map.size());       // 2
    }
}

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

  1. Создаётся HashMap<String, String>.
  2. В неё добавляется запись с ключом null.
  3. Затем добавляется обычная запись с ключом "name".
  4. Повторный put(null, "updated-value") не создаёт новую запись, а заменяет значение у существующего null-ключа.
  5. get(null) возвращает значение, связанное с null.
  6. size() показывает 2, потому что в map только две уникальные записи по ключам.

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

  • HashMap разрешает один null-ключ.
  • Повторный put(null, value) перезаписывает значение, а не добавляет новую запись.
  • HashMap также допускает несколько null-значений.
  • В Hashtable null-ключи и null-значения запрещены.
  • Для null-ключа используется отдельная внутренняя обработка, без вызова hashCode().
  • При выборе между Map-реализациями важно помнить, что поведение с null может отличаться.