Ответ
Да, можно. HashSet в Java допускает ровно один элемент null. Это поведение наследуется от реализации на основе HashMap, где HashSet хранит свои элементы как ключи в HashMap, а HashMap разрешает один ключ null.
Пример:
Set<String> set = new HashSet<>();
set.add(null); // Успешно. set = [null]
set.add("A"); // Успешно. set = [null, "A"]
set.add(null); // Не добавится, так как null уже присутствует. set = [null, "A"]
Важные уточнения:
HashSetиLinkedHashSetразрешают одинnull.TreeSetНЕ разрешаетnull, так как он основан наTreeMap, которому для сравнения элементов нужен компаратор, а вызовcompareTo()илиcompare()наnullвыброситNullPointerException.- При итерации по
HashSet, содержащемуnull, он будет корректно возвращен.
Вывод: HashSet поддерживает добавление одного элемента null, что может быть полезно для представления отсутствующего значения, но требует осторожности при использовании методов, не допускающих null (например, contains(null) работает).