Spec-Zone.ru › OpenJDK 25

Класс 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()
Устанавливает значение false для всех битов этого BitSet.
void clear(int bitIndex)
Устанавливает бит с указанным индексом в значение false.
void clear(int fromIndex, int toIndex)
Устанавливает значение false для битов от указанного fromIndex (включительно) до указанного toIndex (не включительно).
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)
Устанавливает значение true для битов от указанного fromIndex (включительно) до указанного toIndex (не включительно).
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

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

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()
Возвращает количество битов, установленных в значение 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(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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/BitSet.html

Spec-Zone.ru

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