Spec-Zone.ru › OpenJDK 21

Класс BitSet

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

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

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

Если не указано иное, передача нулевого параметра в любой из методов набора бит приведёт к 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)
Устанавливает биты от указанного индекса (включительно) до указанного индекса (исключительно) в значение false.
Object clone()
Клонирование этого набора бит создаёт новый набор бит, равный ему.
boolean equals(Object obj)
Сравнивает этот объект с указанным объектом.
void flip(int bitIndex)
Устанавливает бит по указанному индексу в дополнение к его текущему значению.
void flip(int fromIndex, int 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)
Устанавливает биты от указанного индекса (включительно) до указанного индекса (исключительно) в значение true.
void set(int fromIndex, int toIndex, boolean value)
Устанавливает биты от указанного индекса (включительно) до указанного индекса (исключительно) в указанное значение.
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, которые будут использованы в качестве начальных битов нового набора битов
Возвращает:
набор битов 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, содержащий представление последовательности битов в формате little-endian между его позицией и пределом, которое будет использоваться в качестве начальных битов нового набора битов
Возвращает:
набор битов BitSet, содержащий все биты в буфере в указанном диапазоне
С:
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, которые будут использованы в качестве начальных битов нового набора битов
Возвращает:
набор битов BitSet, содержащий все биты в массиве байтов
С:
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 между его позицией и пределом, которое будет использоваться в качестве начальных битов нового набора битов
Возвращает:
набор битов BitSet, содержащий все биты в буфере в указанном диапазоне
С:
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()
Устанавливает все биты в этом наборе битов в false.
С:
1.4

get

public boolean get(int bitIndex)
Возвращает значение бита с указанным индексом. Значение равно true если бит с индексом bitIndex в настоящее время установлен в этом BitSet; в противном случае результат равен false.
Параметры:
bitIndex - индекс бита
Возвращает:
значение бита с указанным индексом
Исключения:
IndexOutOfBoundsException - если указанный индекс отрицательный

get

public BitSet get(int fromIndex, int toIndex)
Возвращает новый набор битов, состоящий из битов из этого набора битов от fromIndex (включительно) до toIndex (исключительно).
Параметры:
fromIndex - индекс первого бита для включения
toIndex - индекс после последнего бита для включения
Возвращает:
новый набор битов из диапазона этого набора битов
Исключения:
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
     }
 }
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 для маскирования этого 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)
должно быть истинным. Текущие размеры двух наборов битов не сравниваются.
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
Returns:
строковое представление этого набора битов

stream

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

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

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

© 1993, 2023, 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/21/docs/api/java.base/java/util/BitSet.html

Spec-Zone.ru

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