roswell, Но вот какой вопрос беспокоит. Мы же можем сохранять null как значение в HashMap такой элемент при удалении ведь тоже вернет null. Почему такая возможность открыта?
Old-John, потому что возвращение null само по себе никаких гарантий не нарушает. Обычно это нужно, чтобы совершить какие-то действия с объектом после удаления из мапы. Если так хранился, то и действовать надо соответственно.
В случае с HashSet при возврате null будет непонятно - объекта там не было или был.