Класс BitSet
- Все реализованные интерфейсы:
-
Serializable,Cloneable
public class BitSet extends Object implements Cloneable, Serializable
boolean. Битами набора BitSet индексируются неотрицательные целые числа. Индивидуальные индексированные биты могут быть проверены, установлены или сброшены. Один набор BitSet может использоваться для изменения содержимого другого набора BitSet через логические операции И, логическое включительно ИЛИ и логическое исключающее ИЛИ. По умолчанию все биты в наборе изначально имеют значение false.
Каждый набор битов имеет текущий размер, который представляет собой количество битов пространства, в настоящее время используемого набором битов. Обратите внимание, что размер связан с реализацией набора битов, поэтому он может изменяться в зависимости от реализации. Длина набора битов относится к логической длине набора битов и определяется независимо от реализации.
Если не указано иное, передача null-параметра в любой из методов в наборе BitSet приведёт к NullPointerException.
Набор битов не является потокобезопасным без внешней синхронизации.
- С:
- 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 |
Выполняет логическое Исключающее ИЛИ данного набора битов с аргументом набора битов. |
Краткое описание конструкторов
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, содержащий представление little-endian последовательности битов, которые будут использоваться в качестве начальных битов нового набора битов - Возвращает:
- a
BitSetcontaining all the bits in the long array - С версии:
- 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, содержащий представление little-endian последовательности битов между его позицией и лимитом, которые будут использоваться в качестве начальных битов нового набора битов - Возвращает:
- a
BitSetcontaining 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
BitSetcontaining 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
BitSetcontaining 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[] 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)
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()
BitSet не содержит битов, установленных в true.- Returns:
- булево значение, указывающее, пуст ли этот
BitSet - Since:
- 1.4
intersects
public boolean intersects(BitSet set)
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);
} Обратите внимание, что код хеширования изменяется, если набор битов изменен.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. Текущие размеры двух наборов битов не сравниваются.
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.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/BitSet.html