Класс 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() |
Устанавливает значение false для всех битов этого BitSet. |
void |
clear |
Устанавливает бит с указанным индексом в значение false. |
void |
clear |
Устанавливает значение false для битов от указанного fromIndex (включительно) до указанного toIndex (не включительно). |
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 |
Устанавливает значение true для битов от указанного fromIndex (включительно) до указанного toIndex (не включительно). |
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, содержащий представление последовательности битов в порядке от младшего к старшему, которое будет использовано в качестве начальных битов нового набора битов - Возвращает:
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()
true в этом BitSet.- Возвращает:
- количество битов, установленных в значение
trueв этомBitSet - С версии:
- 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
public Object clone()
BitSet создает новый BitSet, равный исходному. Клон набора битов — это другой набор битов, в котором установлен точно такой же набор битов со значением true, как и в исходном наборе.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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/BitSet.html