Класс BitSet
- Все реализуемые интерфейсы:
Serializable, Cloneable
public class BitSet extends Object implements Cloneable, Serializable
boolean. Биты в BitSet индексируются неотрицательными целыми числами. Отдельные биты с заданными индексами можно проверять, устанавливать или сбрасывать. Один BitSet можно использовать для изменения содержимого другого BitSet с помощью операций логического И, логического включающего ИЛИ и логического исключающего ИЛИ. По умолчанию все биты набора изначально имеют значение false.
У каждого битового набора есть текущий размер — количество битов, занимающих место в данный момент. Обратите внимание, что размер связан с реализацией битового набора и поэтому может меняться в зависимости от реализации. Длина битового набора относится к его логической длине и определяется независимо от реализации.
Если не указано иное, передача параметра null любому методу в BitSet приведёт к NullPointerException.
Использовать BitSet в многопоточной среде без внешней синхронизации небезопасно.
- Начиная с версии:
- 1.0
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
BitSet() |
Создаёт новый битовый набор. |
BitSet |
Создаёт битовый набор, начальный размер которого достаточен для явного представления битов с индексами в диапазоне от 0 до nbits-1. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
and |
Выполняет логическую операцию И над этим целевым битовым набором и битовым набором-аргументом. |
void |
andNot |
Сбрасывает все биты в этом BitSet, соответствующие которым установлены в указанном BitSet. |
int |
cardinality() |
Возвращает количество битов, установленных в значение true в этом BitSet. |
void |
clear() |
Устанавливает все биты этого BitSet в значение false. |
void |
clear |
Устанавливает бит с указанным индексом в значение false. |
void |
clear |
Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключительно) в значение false. |
Object |
clone() |
Клонирование этого BitSet создаёт новый BitSet, равный исходному. |
boolean |
equals |
Сравнивает этот битовый набор с указанным объектом. |
void |
flip |
Устанавливает бит с указанным индексом в значение, противоположное его текущему значению. |
void |
flip |
Устанавливает каждый бит от указанного fromIndex (включительно) до указанного toIndex (исключительно) в значение, противоположное его текущему значению. |
boolean |
get |
Возвращает значение бита с указанным индексом. |
BitSet |
get |
Возвращает новый BitSet, состоящий из битов этого BitSet от fromIndex (включительно) до toIndex (исключительно). |
int |
hashCode() |
Возвращает хеш-код этого битового набора. |
boolean |
intersects |
Возвращает true, если в указанном BitSet есть биты, установленные в значение true, которые также установлены в значение true в этом BitSet. |
boolean |
isEmpty() |
Возвращает true, если в этом BitSet нет битов, установленных в значение true. |
int |
length() |
Возвращает «логический размер» этого BitSet: индекс старшего установленного бита в BitSet плюс один. |
int |
nextClearBit |
Возвращает индекс первого бита, установленного в значение false, который находится на указанном начальном индексе или после него. |
int |
nextSetBit |
Возвращает индекс первого бита, установленного в значение true, который находится на указанном начальном индексе или после него. |
void |
or |
Выполняет логическую операцию ИЛИ над этим битовым набором и битовым набором-аргументом. |
int |
previousClearBit |
Возвращает индекс ближайшего бита, установленного в значение false, который находится на указанном начальном индексе или перед ним. |
int |
previousSetBit |
Возвращает индекс ближайшего бита, установленного в значение true, который находится на указанном начальном индексе или перед ним. |
void |
set |
Устанавливает бит с указанным индексом в значение true. |
void |
set |
Устанавливает бит с указанным индексом в указанное значение. |
void |
set |
Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключительно) в значение true. |
void |
set |
Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключительно) в указанное значение. |
int |
size() |
Возвращает количество битов пространства, фактически используемого этим BitSet для представления значений битов. |
IntStream |
stream() |
Возвращает поток индексов, для которых этот BitSet содержит установленный бит. |
byte[] |
toByteArray() |
Возвращает новый массив байтов, содержащий все биты этого битового набора. |
long[] |
toLongArray() |
Возвращает новый массив long, содержащий все биты этого битового набора. |
String |
toString() |
Возвращает строковое представление этого битового набора. |
static BitSet |
valueOf |
Возвращает новый битовый набор, содержащий все биты заданного массива байтов. |
static BitSet |
valueOf |
Возвращает новый битовый набор, содержащий все биты заданного массива long. |
static BitSet |
valueOf |
Возвращает новый битовый набор, содержащий все биты заданного буфера байтов между его текущей позицией и пределом. |
static BitSet |
valueOf |
Возвращает новый битовый набор, содержащий все биты заданного буфера long между его текущей позицией и пределом. |
void |
xor |
Выполняет логическую операцию ИСКЛЮЧАЮЩЕЕ ИЛИ над этим битовым набором и битовым набором-аргументом. |
Методы, объявленные в классе 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 |
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ждать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание конструкторов
BitSet
public BitSet()
false.BitSet
public BitSet(int nbits)
0 до nbits-1. Изначально все биты false.- Параметры:
-
nbits— начальный размер набора битов - Исключения:
-
NegativeArraySizeException— если указанный начальный размер отрицателен
Подробное описание методов
valueOf
public static BitSet valueOf(long[] longs)
Точнее, 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)
Точнее, 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)
Точнее, 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)
Точнее, 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[] 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[] 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()
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()
BitSet не содержит битов, установленных в значение true.- Возвращает:
- логическое значение, указывающее, пуст ли этот
BitSet - С момента:
- 1.4
intersects
public boolean intersects(BitSet set)
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)
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);
} Обратите внимание, что хеш-код изменяется при изменении набора битов.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)должно быть истинным. Текущие размеры двух наборов битов не сравниваются.
clone
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}".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.