Класс BitSet

Все реализованные интерфейсы:
Serializable, Cloneable
public class BitSet
extends Object
implements Cloneable, Serializable

Этот класс реализует вектор битов, который увеличивается по мере необходимости. Каждый компонент набора битов имеет значение boolean. Битами набора битов индексируют неотрицательные целые числа. Отдельные индексированные биты могут быть просмотрены, установлены или очищены. Один набор битов может быть использован для изменения содержимого другого набора битов путём логических операций И, логического включительно ИЛИ и логического исключающего ИЛИ.

По умолчанию все биты в наборе изначально имеют значение false.

Каждый набор битов имеет текущий размер, который представляет количество битов, в настоящее время используемых набором битов. Обратите внимание, что размер связан с реализацией набора битов, поэтому он может меняться в зависимости от реализации. Длина набора битов относится к логической длине набора битов и определяется независимо от реализации.

Если не указано иное, передача null-параметра любому методу в наборе битов приведёт к NullPointerException.

Набор битов не является потокобезопасным без внешней синхронизации.

С:
1.0
См. также:
Сериализованная форма

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

Конструктор Описание
BitSet()

Создаёт новый набор битов.

BitSet​(int nbits)

Создаёт набор битов, размер которого достаточно велик для явного представления битов с индексами в диапазоне 0 по nbits-1.

Методы

Модификатор и тип Метод Описание
void and​(BitSet set)

Выполняет логическую операцию И для этого целевого набора битов с набором битов аргумента.

void andNot​(BitSet set)

Очищает все биты в этом наборе битов, соответствующие битам, установленным в указанном наборе битов.

int cardinality()

Возвращает количество битов, установленных в true в этом наборе битов.

void clear()

Устанавливает все биты в этом BitSet в false.

void clear​(int bitIndex)

Устанавливает бит, указанный индексом, в false.

void clear​(int fromIndex, int toIndex)

Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключительно) в false.

Object clone()

Клонирование этого набора битов создаёт новый набор битов, который ему равен.

boolean equals​(Object obj)

Сравнивает этот объект с указанным объектом.

void flip​(int bitIndex)

Устанавливает бит в указанном индексе в дополнение к его текущему значению.

void flip​(int fromIndex, int toIndex)

Устанавливает каждый бит от указанного fromIndex (включительно) до указанного toIndex (исключительно) в дополнение к его текущему значению.

boolean get​(int bitIndex)

Возвращает значение бита с указанным индексом.

BitSet get​(int fromIndex, int toIndex)

Возвращает новый набор битов, состоящий из битов из этого набора битов от fromIndex (включительно) до toIndex (исключительно).

int hashCode()

Возвращает хеш-код для этого набора битов.

boolean intersects​(BitSet set)

Возвращает true, если указанный набор битов имеет биты, установленные в true , которые также установлены в true в этом наборе битов.

boolean isEmpty()

Возвращает true, если этот набор битов не содержит битов, установленных в true.

int length()

Возвращает "логический размер" этого набора битов: индекс самого правого установленного бита плюс один.

int nextClearBit​(int fromIndex)

Возвращает индекс первого бита, установленного в false, который встречается на или после указанного начального индекса.

int nextSetBit​(int fromIndex)

Возвращает индекс первого бита, установленного в true, который встречается на или после указанного начального индекса.

void or​(BitSet set)

Выполняет логическую операцию ИЛИ для этого набора битов с набором битов аргумента.

int previousClearBit​(int fromIndex)

Возвращает индекс ближайшего бита, установленного в false, который встречается на или до указанного начального индекса.

int previousSetBit​(int fromIndex)

Возвращает индекс ближайшего бита, установленного в true, который встречается на или до указанного начального индекса.

void set​(int bitIndex)

Устанавливает бит в указанном индексе в true.

void set​(int bitIndex, boolean value)

Устанавливает бит в указанном индексе в указанное значение.

void set​(int fromIndex, int toIndex)

Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключительно) в true.

void set​(int fromIndex, int toIndex, boolean value)

Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключительно) в указанное значение.

int size()

Возвращает количество битов, фактически используемых этим набором битов для представления значений битов.

IntStream stream()

Возвращает поток индексов, для которых этот набор битов содержит бит в состоянии установки.

byte[] toByteArray()

Возвращает новый массив байтов, содержащий все биты в этом наборе битов.

long[] toLongArray()

Возвращает новый массив long, содержащий все биты в этом наборе битов.

String toString()

Возвращает строковое представление этого набора битов.

static BitSet valueOf​(byte[] bytes)

Возвращает новый набор битов, содержащий все биты в заданном массиве байтов.

static BitSet valueOf​(long[] longs)

Возвращает новый набор битов, содержащий все биты в заданном массиве long.

static BitSet valueOf​(ByteBuffer bb)

Возвращает новый набор битов, содержащий все биты в заданном буфере байтов между его позицией и пределом.

static BitSet valueOf​(LongBuffer lb)

Возвращает новый набор битов, содержащий все биты в заданном буфере long между его позицией и пределом.

void xor​(BitSet set)

Выполняет логическую операцию ИСКЛЮЧАЮЩЕЕ ИЛИ для этого набора битов с набором битов аргумента.

Методы, объявленные в классе java.lang.Object

finalize, getClass, notify, notifyAll, wait, wait, wait

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

BitSet

public BitSet()

Создаёт новый набор битов. Все биты изначально false.

BitSet

public BitSet(int nbits)

Создаёт набор битов, размер которого достаточно велик для явного представления битов с индексами в диапазоне 0 по nbits-1. Все биты изначально false.

Параметры:
nbits - начальный размер набора битов
Исключения:
NegativeArraySizeException - если указанный начальный размер отрицательный

Методы

valueOf

public static BitSet valueOf(long[] longs)

Возвращает новый набор битов, содержащий все биты в данном массиве long.

Точнее,
BitSet.valueOf(longs).get(n) == ((longs[n/64] & (1L<<(n%64))) != 0)
для всех n < 64 * longs.length.

Этот метод эквивалентен BitSet.valueOf(LongBuffer.wrap(longs)).

Параметры:
longs - массив long, содержащий представление little-endian последовательности битов, которые будут использоваться в качестве начальных битов нового набора битов
Возвращает:
a BitSet containing all the bits in the long array
С версии:
1.7

valueOf

public static BitSet valueOf(LongBuffer lb)

Возвращает новый набор битов, содержащий все биты в данном буфере long между его позицией и лимитом.

Точнее,
BitSet.valueOf(lb).get(n) == ((lb.get(lb.position()+n/64) & (1L<<(n%64))) != 0)
для всех n < 64 * lb.remaining().

Этот метод не изменяет буфер long, и набор битов не сохраняет ссылку на буфер.

Параметры:
lb - буфер long, содержащий представление little-endian последовательности битов между его позицией и лимитом, которые будут использоваться в качестве начальных битов нового набора битов
Возвращает:
a BitSet containing all the bits in the buffer in the specified range
С версии:
1.7

valueOf

public static BitSet valueOf(byte[] bytes)

Возвращает новый набор битов, содержащий все биты в данном массиве byte.

Точнее,
BitSet.valueOf(bytes).get(n) == ((bytes[n/8] & (1<<(n%8))) != 0)
для всех n < 8 * bytes.length.

Этот метод эквивалентен BitSet.valueOf(ByteBuffer.wrap(bytes)).

Параметры:
bytes - массив byte, содержащий представление little-endian последовательности битов, которые будут использоваться в качестве начальных битов нового набора битов
Возвращает:
a BitSet containing all the bits in the byte array
С версии:
1.7

valueOf

public static BitSet valueOf(ByteBuffer bb)

Возвращает новый набор битов, содержащий все биты в данном буфере byte между его позицией и лимитом.

Точнее,
BitSet.valueOf(bb).get(n) == ((bb.get(bb.position()+n/8) & (1<<(n%8))) != 0)
для всех n < 8 * bb.remaining().

Этот метод не изменяет буфер byte, и набор битов не сохраняет ссылку на буфер.

Параметры:
bb - буфер byte, содержащий представление little-endian последовательности битов между его позицией и лимитом, которые будут использоваться в качестве начальных битов нового набора битов
Возвращает:
a BitSet containing all the bits in the buffer in the specified range
С версии:
1.7

toByteArray

public byte[] toByteArray()

Возвращает новый массив byte, содержащий все биты в этом наборе битов.

Точнее, если
byte[] bytes = s.toByteArray();
то bytes.length == (s.length()+7)/8 и
s.get(n) == ((bytes[n/8] & (1<<(n%8))) != 0)
для всех n < 8 * bytes.length.

Возвращает:
массив byte, содержащий представление little-endian всех битов в этом наборе битов
С версии:
1.7

toLongArray

public long[] toLongArray()

Возвращает новый массив long, содержащий все биты в этом наборе битов.

Точнее, если
long[] longs = s.toLongArray();
то longs.length == (s.length()+63)/64 и
s.get(n) == ((longs[n/64] & (1L<<(n%64))) != 0)
для всех n < 64 * longs.length.

Возвращает:
массив long, содержащий представление little-endian всех битов в этом наборе битов
С версии:
1.7

flip

public void flip(int bitIndex)

Устанавливает бит по указанному индексу в дополнение к его текущему значению.

Параметры:
bitIndex - индекс бита для инвертирования
Исключения:
IndexOutOfBoundsException - если указанный индекс отрицателен
С версии:
1.4

flip

public void flip(int fromIndex,
                 int toIndex)

Устанавливает каждый бит от указанного fromIndex (включительно) до указанного toIndex (исключительно) в дополнение к его текущему значению.

Параметры:
fromIndex - индекс первого бита для инвертирования
toIndex - индекс после последнего бита для инвертирования
Исключения:
IndexOutOfBoundsException - если fromIndex отрицателен, или toIndex отрицателен, или fromIndex больше чем toIndex
С версии:
1.4

set

public void set(int bitIndex)

Устанавливает бит по указанному индексу в true.

Параметры:
bitIndex - индекс бита
Исключения:
IndexOutOfBoundsException - если указанный индекс отрицателен
С версии:
1.0

set

public void set(int bitIndex,
                boolean value)

Устанавливает бит по указанному индексу в указанное значение.

Параметры:
bitIndex - индекс бита
value - булево значение для установки
Исключения:
IndexOutOfBoundsException - если указанный индекс отрицателен
С версии:
1.4

set

public void set(int fromIndex,
                int toIndex)

Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключительно) в true.

Параметры:
fromIndex - индекс первого бита для установки
toIndex - индекс после последнего бита для установки
Исключения:
IndexOutOfBoundsException - если fromIndex отрицателен, или toIndex отрицателен, или fromIndex больше чем toIndex
С версии:
1.4

set

public void set(int fromIndex,
                int toIndex,
                boolean value)

Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключительно) в указанное значение.

Параметры:
fromIndex - индекс первого бита для установки
toIndex - индекс после последнего бита для установки
value - значение для установки выбранных битов
Исключения:
IndexOutOfBoundsException - если fromIndex отрицателен, или toIndex отрицателен, или fromIndex больше чем toIndex
С версии:
1.4

clear

public void clear(int bitIndex)

Устанавливает бит, указанный индексом, в false.

Параметры:
bitIndex - индекс бита для очистки
Исключения:
IndexOutOfBoundsException - если указанный индекс отрицателен
С версии:
1.0

clear

public void clear(int fromIndex,
                  int toIndex)

Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключительно) в false.

Параметры:
fromIndex - индекс первого бита для очистки
toIndex - индекс после последнего бита для очистки
Исключения:
IndexOutOfBoundsException - если fromIndex отрицателен, или toIndex отрицателен, или fromIndex больше чем toIndex
С версии:
1.4

clear

public void clear()

Устанавливает все биты в этом BitSet в false.

С версии:
1.4

get

public boolean get(int bitIndex)

Возвращает значение бита с указанным индексом. Значение равно true, если бит с индексом bitIndex в данный момент установлен в этом BitSet; в противном случае результат равен false.

Параметры:
bitIndex - индекс бита
Возвращает:
значение бита с указанным индексом
Исключения:
IndexOutOfBoundsException - если указанный индекс отрицателен

get

public BitSet get(int fromIndex,
                  int toIndex)

Возвращает новый BitSet, составленный из битов из этого BitSet от fromIndex (включительно) до toIndex (исключительно).

Параметры:
fromIndex - индекс первого бита для включения
toIndex - индекс после последнего бита для включения
Возвращает:
новый BitSet из диапазона этого BitSet
Исключения:
IndexOutOfBoundsException - если fromIndex отрицателен, или toIndex отрицателен, или fromIndex больше чем toIndex
С версии:
1.4

nextSetBit

public int nextSetBit(int fromIndex)

Возвращает индекс первого бита, установленного в true, который встречается в или после указанного начального индекса. Если такого бита не существует, то возвращается -1.

Для итерации по true битам в BitSet, используйте следующий цикл:

for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i+1)) {
     // operate on index i here
     if (i == Integer.MAX_VALUE) {
         break; // or (i+1) would overflow
     }
 }
Параметры:
fromIndex - индекс, с которого начинать проверку (включительно)
Возвращает:
индекс следующего установленного бита или -1, если такого бита нет
Исключения:
IndexOutOfBoundsException - если указанный индекс отрицателен
С версии:
1.4

nextClearBit

public int nextClearBit(int fromIndex)

Возвращает индекс первого бита, установленного в false, который встречается в или после указанного начального индекса.

Параметры:
fromIndex - индекс, с которого начинать проверку (включительно)
Возвращает:
индекс следующего очищенного бита
Исключения:
IndexOutOfBoundsException - если указанный индекс отрицателен
С версии:
1.4

previousSetBit

public int previousSetBit(int fromIndex)

Возвращает индекс ближайшего бита, установленного в true, который встречается до или в указанном начальном индексе. Если такого бита не существует, или если в качестве начального индекса задано -1, то возвращается -1.

Для итерации по true битам в BitSet, используйте следующий цикл:

for (int i = bs.length(); (i = bs.previousSetBit(i-1)) >= 0; ) {
     // operate on index i here
 }
Параметры:
fromIndex - индекс, с которого начинать проверку (включительно)
Возвращает:
индекс предыдущего установленного бита или -1, если такого бита нет
Исключения:
IndexOutOfBoundsException - если указанный индекс меньше чем -1
С версии:
1.7

previousClearBit

public int previousClearBit(int fromIndex)

Возвращает индекс ближайшего бита, установленного в false, который встречается на или до указанного начального индекса. Если такого бита нет, или если -1 задано в качестве начального индекса, то возвращается -1.

Параметры:
fromIndex - индекс для начала проверки (включительно)
Возвращает:
индекс предыдущего сброшенного бита или -1, если такого бита нет
Выбрасывает:
IndexOutOfBoundsException - если указанный индекс меньше -1
С момента:
1.7

length

public int length()

Возвращает "логический размер" этого BitSet: индекс самого старшего установленного бита в BitSet плюс единица. Возвращает ноль, если в BitSet нет установленных битов.

Возвращает:
логический размер этого BitSet
С момента:
1.2

isEmpty

public boolean isEmpty()

Возвращает true, если этот BitSet не содержит битов, установленных в true.

Возвращает:
булево значение, указывающее, пуст ли этот BitSet
С момента:
1.4

intersects

public boolean intersects(BitSet set)

Возвращает true, если в указанном BitSet имеются какие-либо биты, установленные в true, которые также установлены в true в этом BitSet.

Параметры:
set - BitSet для пересечения
Возвращает:
булево значение, указывающее, пересекается ли этот BitSet с указанным BitSet
С момента:
1.4

cardinality

public int cardinality()

Возвращает количество битов, установленных в true в этом BitSet.

Возвращает:
количество битов, установленных в true в этом BitSet
С момента:
1.4

and

public void and(BitSet set)

Выполняет логическое И этого целевого набора битов с набором битов аргумента. Этот набор битов изменяется таким образом, что каждый бит в нём имеет значение true тогда и только тогда, когда он изначально имел значение true и соответствующий бит в наборе битов-аргументе также имел значение true.

Параметры:
set - набор битов

or

public void or(BitSet set)

Выполняет логическое ИЛИ этого набора битов с набором битов аргумента. Этот набор битов изменяется таким образом, что бит в нём имеет значение true тогда и только тогда, когда он либо уже имел значение true либо соответствующий бит в наборе битов аргумента имеет значение true.

Параметры:
set - набор битов

xor

public void xor(BitSet set)

Выполняет логическое Исключающее ИЛИ этого набора битов с набором битов аргумента. Этот набор битов изменяется таким образом, что бит в нём имеет значение true тогда и только тогда, когда выполняется одно из следующих утверждений:

  • Бит изначально имеет значение true, а соответствующий бит в аргументе имеет значение false.
  • Бит изначально имеет значение false, а соответствующий бит в аргументе имеет значение true.

Параметры:
set - набор битов

andNot

public void andNot(BitSet set)

Сбрасывает все биты в этом BitSet, у которых соответствующий бит установлен в указанном BitSet.

Параметры:
set - BitSet для маскирования этого BitSet
С момента:
1.2

hashCode

public int hashCode()

Возвращает значение хэш-кода для этого набора битов. Хэш-код зависит только от того, какие биты установлены в этом BitSet.

Хэш-код определяется как результат следующего вычисления:

public int hashCode() {
     long h = 1234;
     long[] words = toLongArray();
     for (int i = words.length; --i >= 0; )
         h ^= words[i] * (i + 1);
     return (int)((h >> 32) ^ h);
 }
Обратите внимание, что хэш-код изменяется, если набор битов изменяется.
Переопределяет:
hashCode в классе Object
Возвращает:
значение хэш-кода для этого набора битов
См. также:
Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

size

public int size()

Возвращает количество битов памяти, фактически используемых этим BitSet для представления значений битов. Максимальный элемент в наборе — элемент с индексом size - 1.

Возвращает:
количество битов в этом наборе битов

equals

public boolean equals(Object obj)

Сравнивает этот объект со специфицированным объектом. Результат равен true тогда и только тогда, когда аргумент не null и является объектом Bitset с точно таким же набором битов, установленных в true, как и в этом наборе битов. То есть для каждого неотрицательного индекса int k,

((BitSet)obj).get(k) == this.get(k)
должно быть истинно. Текущие размеры двух наборов битов не сравниваются.

Переопределяет:
equals в классе Object
Параметры:
obj - объект для сравнения
Возвращает:
true если объекты совпадают; false в противном случае
См. также:
size()

clone

public Object clone()

Клонирование этого BitSet создаёт новый BitSet, равный ему. Клон набора битов — это другой набор битов, в котором точно такие же биты установлены в true как в этом наборе битов.

Переопределяет:
clone в классе Object
Возвращает:
клон этого набора битов
См. также:
size()

toString

public String toString()

Возвращает строковое представление этого набора битов. Для каждого индекса, для которого этот BitSet содержит бит в состоянии установления, в результате включается десятичное представление этого индекса. Такие индексы перечисляются в порядке возрастания, разделённые ", " (запятая и пробел), и окружены фигурными скобками, что соответствует стандартной математической записи для набора целых чисел.

Пример:

BitSet drPepper = new BitSet();
Теперь drPepper.toString() возвращает "{}".
drPepper.set(2);
Теперь drPepper.toString() возвращает "{2}".
drPepper.set(4);
 drPepper.set(10);
Теперь drPepper.toString() возвращает "{2, 4, 10}".
Переопределяет:
toString в классе Object
Возвращает:
строковое представление этого набора битов

stream

public IntStream stream()

Возвращает поток индексов, для которых этот BitSet содержит бит в состоянии установления. Индексы возвращаются в порядке возрастания. Размер потока равен количеству битов в состоянии установления, равному значению, возвращаемому методом cardinality().

Поток привязывается к этому набору битов в момент начала терминальной операции потока (в частности, итератор для потока привязывается поздно). Если набор битов изменяется во время этой операции, результат не определён.

Возвращает:
поток целых чисел, представляющих индексы набора
С момента:
1.8

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/BitSet.html

Spec-Zone .ru
спецификации, руководства, описания, API