Почему java.util.BitSet
не реализует интерфейс java.util.Set<Integer>
. Особенно, когда это легко сделать. Также BitSet используется для поддержки, если целое число было "включено или нет", Set также делает то же самое. Итак, BitSet
- это Set<Integer>
. Ссылаясь на некоторые комментарии, говорящие, что
Теперь рассмотрим методы BitSet. Целью класса является выполнение логических операций над набором битов, которые находятся в определенном порядке.
Я бы все же сказал, что BitSet
- это Set<Integer>
который также предоставляет дополнительный набор операций.
java.util.BitSet
находится в JDK с версии 1.0, java.util.Set
вышла на сцену с JDK 1.2. Поэтому BitSet
не может реализовать Set
.
Если вам нужна реализация Set<>
поддерживаемая BitSet
, это, похоже, не сложно реализовать с помощью поддерживающего BitSet
.
EnumSet
- это реализация Set
которая дает следующие преимущества набора битов: (а) компактность в памяти и (б) очень быстрая работа. Представлено внутри как битовые векторы.
Hashtable
/ Stack
/ Vector
находятся в JDK начиная с версии 1.0, но они все еще могут обновляться для реализации Map
и List
на 1.2. Поэтому это не веская причина.
Поскольку комментарии не делают это достаточно очевидным:
Вы говорите: "BitSet эффективно эффективный набор. BitSet - это набор" - нет, это не так. Set
- это коллекция, которая не содержит повторяющихся элементов.
Теперь представьте Set<Bit>
. Поскольку бит может быть только 1 или 0, это будет довольно скучный набор максимального размера 2.
Теперь рассмотрим методы BitSet
. Целью класса является выполнение логических операций над набором битов, которые находятся в определенном порядке. Это не имеет никакого отношения к Set
.
Set<Integer>
, что прекрасно имеет смысл. Единственным недостатком является то, что он может обрабатывать только целый ряд целых, но не все из них. И эти побитовые or
и and
логические операции будут соответствовать объединению и пересечению.
Set<Integer>
? Вопрос ОП довольно прост.