Класс Java Bitset

Java 数据结构Структуры данных Java


Класс Bitset создает специальный тип массива для хранения битовых значений. Размер массива BitSet будет увеличиваться по мере необходимости. Это похоже на вектор битов.

Это традиционный класс, но в Java 2 он был полностью переработан.

BitSet определяет два конструктора.

Первый конструктор создает объект по умолчанию:

BitSet()

Второй метод позволяет пользователю указать начальный размер. Все биты инициализируются значением 0.

BitSet(int size)

Методы, определенные в интерфейсе Cloneable, реализованном в BitSet, перечислены в следующей таблице:

Нет. Описание метода
1 void and(BitSet set)
Выполняет логическую операцию AND над этим целевым набором битов и набором битов, переданным в аргументе.
2 void andNot(BitSet set)
Сбрасывает все биты в этом BitSet, соответствующие биты которых установлены в указанном BitSet.
3 int cardinality( )
Возвращает количество битов, установленных в true, в этом BitSet.
4 void clear( )
Устанавливает все биты в этом BitSet в false.
5 void clear(int index)
Устанавливает бит по указанному индексу в false.
6 void clear(int startIndex, int endIndex)
Устанавливает биты от указанного startIndex (включительно) до указанного toIndex (исключительно) в false.
7 Object clone( )
Клонирует этот BitSet, создавая новый BitSet, равный ему.
8 boolean equals(Object bitSet)
Сравнивает этот объект с указанным объектом.
9 void flip(int index)
Устанавливает бит по указанному индексу в значение, обратное его текущему значению.
10 void flip(int startIndex, int endIndex)
Устанавливает каждый бит от указанного fromIndex (включительно) до указанного toIndex (исключительно) в значение, обратное его текущему значению.
11 boolean get(int index)
Возвращает значение бита по указанному индексу.
12 BitSet get(int startIndex, int endIndex)
Возвращает новый BitSet, состоящий из битов этого BitSet от fromIndex (включительно) до toIndex (исключительно).
13 int hashCode( )
Возвращает значение хеш-кода этого битового набора.
14 boolean intersects(BitSet bitSet)
Возвращает true, если в указанном BitSet есть бит, установленный в true, который также установлен в true в этом BitSet.
15 boolean isEmpty( )
Возвращает true, если этот BitSet не содержит битов, установленных в true.
16 int length( )
Возвращает "логический размер" этого BitSet: индекс самого старшего установленного бита в BitSet плюс 1.
17 int nextClearBit(int startIndex)
Возвращает индекс первого бита, установленного в false, который встречается на указанном начальном индексе или после него.
18 int nextSetBit(int startIndex)
Возвращает индекс первого бита, установленного в true, который находится на указанном начальном индексе или после него.
19 void or(BitSet bitSet)
Выполняет логическую операцию OR над этим набором битов и набором битов, переданным в аргументе.
20 void set(int index)
Устанавливает бит по указанному индексу в true.
21 void set(int index, boolean v)
Устанавливает бит по указанному индексу в указанное значение.
22 void set(int startIndex, int endIndex)
Устанавливает биты с указанного fromIndex (включительно) до указанного toIndex (исключительно) в true.
23 void set(int startIndex, int endIndex, boolean v)
Устанавливает биты с указанного fromIndex (включительно) до указанного toIndex (исключительно) в указанное значение.
24 int size( )
Возвращает количество бит пространства, фактически используемого этим BitSet при представлении значений битов.
25 String toString( )
Возвращает строковое представление этого битового набора.
26 void xor(BitSet bitSet)
Выполняет логическую операцию XOR над этим битовым набором и битовым набором, переданным в аргументе.

Пример

Следующая программа иллюстрирует несколько методов, поддерживаемых этой структурой данных:

Пример

import java.util.BitSet; public class BitSetDemo { public static void main(String args[]) { BitSet bits1 = new BitSet(16); BitSet bits2 = new BitSet(16); // установить некоторые биты for(int i=0; i<16; i++) { if((i%2) == 0) bits1.set(i); if((i%5) != 0) bits2.set(i); } System.out.println("Исходный шаблон в bits1: "); System.out.println(bits1); System.out.println("\nИсходный шаблон в bits2: "); System.out.println(bits2); // AND bits bits2.and(bits1); System.out.println("\nbits2 AND bits1: "); System.out.println(bits2); // OR bits bits2.or(bits1); System.out.println("\nbits2 OR bits1: "); System.out.println(bits2); // XOR bits bits2.xor(bits1); System.out.println("\nbits2 XOR bits1: "); System.out.println(bits2); } }

Компиляция и запуск приведённого выше примера дают следующий результат:

Initial pattern in bits1:
{0, 2, 4, 6, 8, 10, 12, 14}

Initial pattern in bits2:
{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}

bits2 AND bits1:
{2, 4, 6, 8, 12, 14}

bits2 OR bits1:
{0, 2, 4, 6, 8, 10, 12, 14}

bits2 XOR bits1:
{}

Java 数据结构Структуры данных Java

Другие расширения