Как ведет себя HashMap при использовании null в качестве ключа?

«Как ведет себя HashMap при использовании null в качестве ключа?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HashMap в Java позволяет использовать один null-ключ. Он хранится в бакете с индексом 0.

Поведение:

  • Первый вызов map.put(null, value) успешно добавит запись.
  • Последующий вызов map.put(null, anotherValue) перезапишет значение для null-ключа.

Пример:

Map<String, String> map = new HashMap<>();
map.put(null, "Первое значение");
map.put(null, "Второе значение"); // Перезапись!

System.out.println(map.get(null)); // "Второе значение"
System.out.println(map.size());    // 1

Важные отличия:

  • Hashtable не разрешает null ни как ключ, ни как значение.
  • ConcurrentHashMap также не разрешает null (из-за неоднозначности в многопоточной среде).