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