← Назад к вопросам
Можно ли в Hash коллекциях хранить null?
2.0 Middle🔥 171 комментариев
#Коллекции#ООП
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
# Null в Hash коллекциях
Ответ зависит от конкретной коллекции.
HashMap
ДА, HashMap позволяет хранить null:
- Один null ключ
- Много null значений
Map<String, String> map = new HashMap<>();
map.put(null, "value");
map.put("key", null);
System.out.println(map.get(null)); // value
HashSet
ДА, HashSet позволяет хранить один null.
ConcurrentHashMap
НЕТ, не допускает null ни для ключей, ни для значений. Это сделано для безопасности в многопоточной среде.
ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();
map.put(null, "value"); // NullPointerException!
TreeMap
НЕТ, не допускает null ключи (нужна сортировка). Значения могут быть null.
Различие между get(null) и отсутствием ключа
Map<String, String> map = new HashMap<>();
map.put("key", null);
if (map.get("missing") == null) {
// Не ясно: ключа нет или значение null?
}
// Правильно:
if (!map.containsKey("missing")) {
System.out.println("Ключа нет");
}
Best Practice
Используй getOrDefault или Optional для избежания null:
String value = map.getOrDefault("key", "default");
Optional.ofNullable(map.get("key"))
.ifPresent(System.out::println);
Таблица:
- HashMap: null ключ (1 шт), null значения (много) - ДА
- HashSet: один null - ДА
- ConcurrentHashMap: никаких null - НЕТ
- TreeMap: null ключи - НЕТ, null значения - ДА