API-интерфейс для интерфейсных состояний Java Set:Есть ли базовая реализация Java Set, которая не допускает null?
Например, некоторые реализации запретить
null
элементы и некоторые из них ограничения на типы их элементов
Я ищу для базовой реализации Установить, что не требует упорядочения (поскольку ArrayList обеспечивает интерфейс List), и это не разрешает null
. TreeSet, HashSet и LinkedHashSet все допускают нулевые элементы. Кроме того, TreeSet имеет требование, чтобы элементы реализовывали Comparable.
Похоже, что такой базовый Set
не существует. Кто-нибудь знает, почему? Или, если существует, где я могу ее найти?
[Изменить]: Я не хочу разрешать null
, так как позже в коде мой класс будет перебирать все элементы в коллекции и вызывать определенный метод. (Я фактически использую HashSet<MyRandomObject
>). Я предпочел бы не быстро, чем потерпеть неудачу позже или случайно повлек бы какое-то странное поведение из-за того, что он находится в наборе null
.
Все наборы в значительной степени должны реализовать какой-то способ быстро найти дубликаты, либо Сопоставимые или хеш-коды, в противном случае сканирование для дубликатов было бы слишком болезненным. –
Вы можете дать TreeSet Comparator, что означает, что элементы не обязательно должны быть сравнимыми (должен был быть отдельный метод создания для режима Comparable, IMO). –
Вы также можете проверить, нет ли чего-то, когда вы вытаскиваете его из набора. – cdmckay