null
, она выбрасывает NullPointerException
или ClassCastException
.Большинство списков (
LinkedList
, ArrayList
) принимают null без проблем. Большинство очередей (Queue
и Deque
) не хранят null – возвращая из читающего метода null они сообщают пользователю о пустоте коллекции.Unmodifiable Maps не допускают null-ов совсем. Обычные изменяемые мапы обычно не испытывают трудности со значениями null. А вот с ключами дело обстоит интереснее.
HashMap
не может посчитать hash-сумму от null. Но вместо этого для таких ключей просто используется бакет номер 0.Иногда этот вопрос дается как задача с подвохом про
TreeMap
. Nullability её ключей зависит от готовности к этому компаратора. Натуральный порядок (который работает для Comparable
ключей) не поддерживает null. Раньше в реализации был баг, который позволял положить значение по ключу null в корень дерева без выброса исключения.Для значений Set-ов действуют те же правила, что для ключей лежащих в основе их Map-ов.