Spec-Zone.ru › OpenJDK 27

Класс BitSet

java.lang.Object
java.util.BitSet
Все реализуемые интерфейсы:
Serializable, Cloneable
public class BitSet extends Object implements Cloneable, Serializable
Этот класс реализует вектор битов, который при необходимости увеличивается. Каждый элемент битового набора имеет значение boolean. Биты в BitSet индексируются неотрицательными целыми числами. Отдельные биты с заданными индексами можно проверять, устанавливать или сбрасывать. Один BitSet можно использовать для изменения содержимого другого BitSet с помощью операций логического И, логического включающего ИЛИ и логического исключающего ИЛИ.

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

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

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

Использовать BitSet в многопоточной среде без внешней синхронизации небезопасно.

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

Краткое описание конструкторов

Конструктор Описание
BitSet()
Создаёт новый битовый набор.
BitSet(int nbits)
Создаёт битовый набор, начальный размер которого достаточен для явного представления битов с индексами в диапазоне от 0 до nbits-1.

Краткое описание методов

Модификатор и тип Метод Описание
void and(BitSet set)
Выполняет логическую операцию И над этим целевым битовым набором и битовым набором-аргументом.
void andNot(BitSet set)
Сбрасывает все биты в этом BitSet, соответствующие которым установлены в указанном BitSet.
int cardinality()
Возвращает количество битов, установленных в значение true в этом BitSet.
void clear()
Устанавливает все биты этого BitSet в значение false.
void clear(int bitIndex)
Устанавливает бит с указанным индексом в значение false.
void clear(int fromIndex, int toIndex)
Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключительно) в значение false.
Object clone()
Клонирование этого BitSet создаёт новый BitSet, равный исходному.
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)
Возвращает новый BitSet, состоящий из битов этого BitSet от fromIndex (включительно) до toIndex (исключительно).
int hashCode()
Возвращает хеш-код этого битового набора.
boolean intersects(BitSet set)
Возвращает true, если в указанном BitSet есть биты, установленные в значение true, которые также установлены в значение true в этом BitSet.
boolean isEmpty()
Возвращает true, если в этом BitSet нет битов, установленных в значение true.
int length()
Возвращает «логический размер» этого BitSet: индекс старшего установленного бита в BitSet плюс один.
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()
Возвращает количество битов пространства, фактически используемого этим BitSet для представления значений битов.
IntStream stream()
Возвращает поток индексов, для которых этот BitSet содержит установленный бит.
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)
Выполняет логическую операцию ИСКЛЮЧАЮЩЕЕ ИЛИ над этим битовым набором и битовым набором-аргументом.

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

finalize, getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс этого Object во время выполнения.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Подробное описание конструкторов

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, содержащий представление последовательности битов в порядке от младшего к старшему, которое будет использовано как начальные биты нового набора битов
Возвращает:
BitSet, содержащий все биты из массива long
С момента:
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, содержащий представление последовательности битов в порядке от младшего к старшему между его позицией и пределом, которое будет использовано как начальные биты нового набора битов
Возвращает:
BitSet, содержащий все биты буфера в заданном диапазоне
С момента:
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, содержащий представление последовательности битов в порядке от младшего к старшему, которое будет использовано как начальные биты нового набора битов
Возвращает:
BitSet, содержащий все биты из массива byte
С момента:
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, содержащий представление последовательности битов в порядке от младшего к старшему между его позицией и пределом, которое будет использовано как начальные биты нового набора битов
Возвращает:
BitSet, содержащий все биты буфера в заданном диапазоне
С момента:
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, содержащий представление всех битов этого набора битов в порядке от младшего к старшему
С момента:
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, содержащий представление всех битов этого набора битов в порядке от младшего к старшему
С момента:
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()
Возвращает количество битов этого BitSet, установленных в значение true.
Возвращает:
количество битов этого BitSet, установленных в значение true
С момента:
1.4

and

public void and(BitSet set)
Выполняет логическую операцию AND над этим целевым набором битов и набором битов-аргументом. Этот набор битов изменяется так, что каждый его бит получает значение true тогда и только тогда, когда изначально он имел значение true и соответствующий бит набора битов-аргумента также имел значение true.
Параметры:
set — набор битов

or

public void or(BitSet set)
Выполняет логическую операцию OR над этим набором битов и набором битов-аргументом. Этот набор битов изменяется так, что его бит получает значение true тогда и только тогда, когда он уже имел значение true или соответствующий бит набора битов-аргумента имеет значение true.
Параметры:
set — набор битов

xor

public void xor(BitSet set)
Выполняет логическую операцию XOR над этим набором битов и набором битов-аргументом. Этот набор битов изменяется так, что его бит получает значение 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(Object)

size

public int size()
Возвращает количество битов, фактически используемых этим BitSet для представления значений битов. Максимальный элемент в наборе — это элемент с индексом размер - 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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API