Spec-Zone.ru › OpenJDK 24

Класс 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.

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

С:
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)
Выполняет логическое Исключающее ИЛИ данного набора битов с аргументом набора битов.

Методы, объявленные в классе 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)
Возвращает новый набор битов, содержащий все биты из данного массива байтов.

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

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

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

valueOf

public static BitSet valueOf(ByteBuffer bb)
Возвращает новый набор битов, содержащий все биты в данном буфере байтов между его позицией и лимитом.

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

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

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

toByteArray

public byte[] toByteArray()
Возвращает новый массив байтов, содержащий все биты в этом наборе битов.

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

Возвращает:
массив байтов, содержащий представление 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 (исключительно).
Parameters:
fromIndex - индекс первого бита для включения
toIndex - индекс после последнего бита для включения
Returns:
новый BitSet из диапазона этого BitSet
Throws:
IndexOutOfBoundsException - если fromIndex отрицательный, или toIndex отрицательный, или fromIndex больше чем toIndex
Since:
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
     }
 }
Parameters:
fromIndex - индекс, с которого начинать проверку (включительно)
Returns:
индекс следующего установленного бита, или -1, если такого бита нет
Throws:
IndexOutOfBoundsException - если указанный индекс отрицательный
Since:
1.4

nextClearBit

public int nextClearBit(int fromIndex)
Возвращает индекс первого бита, установленного в false, который встречается на или после указанного начального индекса.
Parameters:
fromIndex - индекс, с которого начинать проверку (включительно)
Returns:
индекс следующего сброшенного бита
Throws:
IndexOutOfBoundsException - если указанный индекс отрицательный
Since:
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
 }
Parameters:
fromIndex - индекс, с которого начинать проверку (включительно)
Returns:
индекс предыдущего установленного бита, или -1, если такого бита нет
Throws:
IndexOutOfBoundsException - если указанный индекс меньше -1
Since:
1.7

previousClearBit

public int previousClearBit(int fromIndex)
Возвращает индекс ближайшего бита, установленного в false, который встречается на или до указанного начального индекса. Если такого бита нет, или если -1 задан в качестве начального индекса, то возвращается -1.
Parameters:
fromIndex - индекс, с которого начинать проверку (включительно)
Returns:
индекс предыдущего сброшенного бита, или -1, если такого бита нет
Throws:
IndexOutOfBoundsException - если указанный индекс меньше -1
Since:
1.7

length

public int length()
Возвращает "логический размер" этого BitSet: индекс самого высокого установленного бита в BitSet плюс один. Возвращает ноль, если BitSet не содержит установленных битов.
Returns:
логический размер этого BitSet
Since:
1.2

isEmpty

public boolean isEmpty()
Возвращает true, если этот BitSet не содержит битов, установленных в true.
Returns:
булево значение, указывающее, пуст ли этот BitSet
Since:
1.4

intersects

public boolean intersects(BitSet set)
Возвращает true, если указанный BitSet имеет биты, установленные в true, которые также установлены в true в этом BitSet.
Parameters:
set - BitSet для пересечения
Returns:
булево значение, указывающее, пересекается ли этот BitSet с указанным BitSet
Since:
1.4

cardinality

public int cardinality()
Возвращает количество битов, установленных в true в этом BitSet.
Returns:
количество битов, установленных в true в этом BitSet
Since:
1.4

and

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

or

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

xor

public void xor(BitSet set)
Выполняет логическое Исключающее ИЛИ этого набора битов с набором аргументов. Этот набор битов изменяется таким образом, что бит в нем имеет значение true тогда и только тогда, когда выполняется одно из следующих утверждений:
  • Бит изначально имеет значение true, а соответствующий бит в аргументе имеет значение false.
  • Бит изначально имеет значение false, а соответствующий бит в аргументе имеет значение true.
Parameters:
set - набор битов

andNot

public void andNot(BitSet set)
Сбрасывает все биты в этом BitSet, соответствующие биты которых установлены в указанном BitSet.
Parameters:
set - набор битов, с которым нужно замаскировать этот BitSet
Since:
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);
 }
Обратите внимание, что код хеширования изменяется, если набор битов изменен.
Overrides:
hashCode в классе Object
Returns:
значение кода хеширования для этого набора битов
See Also:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

size

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

equals

public boolean equals(Object obj)
Сравнивает этот набор битов с указанным объектом. Результат — true тогда и только тогда, когда аргумент не null и является объектом класса BitSet, который имеет ровно тот же набор битов, установленных в true, что и этот набор битов. То есть для каждого неотрицательного индекса int k,
((BitSet)obj).get(k) == this.get(k)
должно быть true. Текущие размеры двух наборов битов не сравниваются.
Overrides:
equals в классе Object
Parameters:
obj - объект для сравнения
Returns:
true, если объекты одинаковые; false в противном случае
See Also:
  • size()

clone

public Object clone()
Клонирование этого BitSet создает новый BitSet, равный ему. Клон набора битов — это другой набор битов, в котором ровно те же биты установлены в true, что и в этом наборе битов.
Overrides:
clone в классе Object
Returns:
клон этого набора битов
See Also:
  • 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}".
Overrides:
toString в классе Object
Возвращает:
строковое представление этого набора битов

stream

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

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

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/BitSet.html

Spec-Zone.ru

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