Spec-Zone.ru › OpenJDK 17

Класс BitSet

java.lang.Object
java.util.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, используемое в качестве начальных битов нового набора битов
Возвращает:
набор битов 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 - набор битов для маскирования данного набора битов
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
Returns:
строковое представление этого набора битов

stream

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

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

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

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

Spec-Zone.ru

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