Поддерживает ли TreeMap в Java нулевые (null) ключи?

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

Ответ

Нет, не поддерживает. TreeMap не позволяет использовать null в качестве ключа.

Причина: TreeMap реализует интерфейс SortedMap и для упорядочивания элементов использует либо естественный порядок (интерфейс Comparable у ключей), либо внешний Comparator. Сравнение null с любым другим объектом приводит к NullPointerException.

Пример ошибки:

TreeMap<String, String> map = new TreeMap<>();
map.put(null, "value"); // Выбросит NullPointerException

Важное отличие: В то время как null-ключи запрещены, null-значения в TreeMap (как и в большинстве реализаций Map) допустимы.

TreeMap<String, String> map = new TreeMap<>();
map.put("key", null); // Корректно