Класс BitSet
- Все реализуемые интерфейсы:
-
Serializable,Cloneable
public class BitSet extends Object implements Cloneable, Serializable
boolean. Биты набора битов индексируются неотрицательными целыми числами. Отдельные биты, индексированные по их номеру, могут быть просмотрены, установлены или сброшены. Один набор битов может быть использован для изменения содержимого другого набора битов посредством логических операций И, ИЛИ и ИСКЛЮЧАЮЩЕЕ ИЛИ. По умолчанию все биты в наборе изначально имеют значение false.
Каждый набор битов имеет текущий размер, который представляет количество битов, в настоящее время используемых набором битов. Обратите внимание, что размер связан с реализацией набора битов, поэтому он может изменяться в зависимости от реализации. Длина набора битов относится к логической длине набора битов и определяется независимо от реализации.
Если не указано иное, передача null-параметра в любой из методов в наборе битов приведет к NullPointerException.
Набор битов не является потокобезопасным без внешней синхронизации.
- С:
- 1.0
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
BitSet() |
Создает новый набор битов. |
BitSet |
Создаёт набор битов, начальный размер которого достаточен для явного представления битов с индексами в диапазоне 0 по nbits-1. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
and |
Выполняет логическое И для данного набора битов с набором битов-аргументом. |
void |
andNot |
Сбрасывает все биты в этом наборе битов, соответствующие битам, установленным в указанном наборе битов. |
int |
cardinality() |
Возвращает количество битов, установленных в true в этом наборе битов. |
void |
clear() |
Устанавливает все биты в BitSet в false. |
void |
clear |
Устанавливает бит, заданный индексом, в false. |
void |
clear |
Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключительно) в false. |
Object |
clone() |
Клонирование этого набора битов создает новый набор битов, равный ему. |
boolean |
equals |
Сравнивает этот объект с указанным объектом. |
void |
flip |
Устанавливает бит в указанном индексе в дополнение к его текущему значению. |
void |
flip |
Устанавливает каждый бит от указанного fromIndex (включительно) до указанного toIndex (исключительно) в дополнение к его текущему значению. |
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 |
Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключительно) в true. |
void |
set |
Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключительно) в указанное значение. |
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- набор битов для маскирования данного набора битов - 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)должно быть true. Текущие размеры двух наборов битов не сравниваются.
- 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, 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