Класс BitSet – создаёт особый тип массива, который содержит значения битов. Массив BitSet может увеличиваться в размерах при необходимости. Это делает его схожим с вектором битов. Это устаревший класс, но он был полностью переделан в Java 2, версия 1.4.

Конструкторы

В Java BitSet определяет следующие два конструктора:

Конструктор и описание
1BitSet()
Этот конструктор создаёт стандартный объект.
2BitSet(int size)
Этот конструктор позволяет вам указать его первоначальный размер, т.е. количество битов, которое он может содержать. Все биты инициализируются до нуля.

Методы

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

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

Пример

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

import java.util.BitSet;
public class BitSetDemo {

  public static void main(String args[]) {
      BitSet bits1 = new BitSet(16);
      BitSet bits2 = new BitSet(16);
      
      // set some bits
      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 биты
      bits2.and(bits1);
      System.out.println("\nbits2 AND bits1: ");
      System.out.println(bits2);

      // OR биты
      bits2.or(bits1);
      System.out.println("\nbits2 OR bits1: ");
      System.out.println(bits2);

      // XOR биты
      bits2.xor(bits1);
      System.out.println("\nbits2 XOR bits1: ");
      System.out.println(bits2);
   }
}

Получим следующее:

Исходная закономерность в bits1:
{0, 2, 4, 6, 8, 10, 12, 14}

Исходная закономерность в 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:
{}

Оглавление