Что произойдет при попытке добавить null в качестве ключа в пустую TreeMap?
Anonymous Quiz
42%
В мапу добавится пара {null="value"}.
8%
Ничего не произойдет, мапа останется пустой.
42%
NullPointerException.
8%
Ошибка компиляции.
🔥4
🔍 Ответ на задачу про TreeMap: Любит ли она null-ключи? 🗺
Коллекции в Java по-разному относятся к null. Если HashMap его терпит, то что скажет TreeMap?
Объяснение:
Многие считают, что TreeMap категорически запрещает null-ключи. На самом деле, TreeMap — это просто дерево, которое полагается на механизм сравнения.
Проблема не в самой TreeMap, а в компараторе. Если вы используете дефолтный компаратор (Natural Ordering), он попытается вызвать
Однако, если при создании TreeMap передать ей кастомный компаратор, который умеет обрабатывать null (например,
Вывод:
TreeMap сама по себе НЕ запрещает null-ключи. Ошибка возникает только при использовании компаратора, не поддерживающего null (что происходит по умолчанию).
⚡️ Не перепутайте:
• HashMap: разрешает один null-ключ.
• Hashtable: запрещает null-ключи и значения на уровне методов
• TreeMap: позволяет использовать null-ключи, ЕСЛИ предоставлен соответствующий компаратор.
#java #collections #treemap #null #map #интервью #java_interview_tasks
Коллекции в Java по-разному относятся к null. Если HashMap его терпит, то что скажет TreeMap?
Объяснение:
Многие считают, что TreeMap категорически запрещает null-ключи. На самом деле, TreeMap — это просто дерево, которое полагается на механизм сравнения.
Проблема не в самой TreeMap, а в компараторе. Если вы используете дефолтный компаратор (Natural Ordering), он попытается вызвать
compareTo() у ключа. Вызов метода у null неизбежно приведет к NullPointerException.Однако, если при создании TreeMap передать ей кастомный компаратор, который умеет обрабатывать null (например,
Comparator.nullsFirst), то TreeMap будет прекрасно работать с null-ключами.Вывод:
TreeMap сама по себе НЕ запрещает null-ключи. Ошибка возникает только при использовании компаратора, не поддерживающего null (что происходит по умолчанию).
⚡️ Не перепутайте:
• HashMap: разрешает один null-ключ.
• Hashtable: запрещает null-ключи и значения на уровне методов
put/get.• TreeMap: позволяет использовать null-ключи, ЕСЛИ предоставлен соответствующий компаратор.
#java #collections #treemap #null #map #интервью #java_interview_tasks
🔥4👍2❤1👎1