2016-09-30 4 views
1

Почему java.util.BitSet не реализует интерфейс java.util.Set<Integer>. Особенно, когда это легко сделать. Также BitSet используется для поддержки, если целое число было «включено или нет», Set также делает то же самое. Таким образом, BitSet является Set<Integer>. Ссылаясь на некоторые комментарии, говорящие о том, чтоПочему java.util.BitSet не реализует java.util.Set

Теперь взгляните на методы BitSet. Целью класса является выполнение логических операций над набором битов, которые находятся в определенном порядке.

Я бы еще сказать, что BitSet является Set<Integer>, который также предоставляет дополнительный набор операций.

+3

@ F1sh Я уверен, что я был в питающихся учреждениях, где это было бы спорно. –

+1

@djaqeel, вы не сделали комментарий AndyTurner несоответствующим, но мой. По крайней мере, вторая его часть. Но теперь вы только что сказали всем, что редактировали свой вопрос, и снова сделали это актуальным, yay! Первая часть моего комментария по-прежнему остается моим окончательным ответом. – f1sh

+2

BitSet - это вектор бит, а Set - это совокупность не дублированных объектов. Утверждение «они ведут себя по-разному и служат совершенно другим целям». из вышеупомянутого комментария hotdog суммирует его совершенно хорошо. – hammerfest

ответ

0

Поскольку комментарии не делают это достаточно очевидно:

Вы говорите «BitSet эффективно эффективный набор BitSet является Set» - нет, это не так. A Set - это коллекция, которая не содержит повторяющихся элементов.

Теперь представьте себе Set<Bit>. Поскольку бит может быть только 1 или 0, это будет довольно скучный набор максимального размера 2.

Теперь взгляните на the methods of BitSet. Целью класса является выполнение логических операций над набором битов, которые находятся в определенном порядке. Это не имеет никакого отношения к Set.

+0

. Я думаю, что OP означает 'Set ', что совершенно разумно. Единственный con - это то, что он может обрабатывать только целые числа, а не все из них. И эти побитовые логические операции 'или' и 'и' будут соответствовать объединению и пересечению. –

+0

@TamasHegedus, где этот вопрос имеет какое-либо отношение к '' Set ''? Вопрос ФП довольно прост. – f1sh

+2

Вопрос сам по себе немного ниже уверенности в качестве, и для этого потребуется некоторое объяснение, но для меня это явно о 'Set '. –

0

java.util.BitSet находится в JDK, так как версия 1.0, java.util.Set вышла на сцену с JDK 1.2. Таким образом, BitSet не может реализовать Set.

Если вам нужна реализация Set<> при поддержке BitSet, это, похоже, сложно реализовать с помощью поддержки BitSet.

+0

Кроме того, ['EnumSet'] (https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html) представляет собой реализацию' Set', которая дает эти преимущества бит-набора: (а) является компактным в памяти и (б) очень быстро выполняется. Представляет внутренне как битовые векторы. –

+0

'Hashtable' /' Stack'/'Vector' находятся в JDK с версии 1.0, но они все равно могут обновляться для реализации' Map' и 'List' в 1.2. Поэтому это не является веской причиной. –

Смежные вопросы