Spec-Zone.ru › OpenJDK 8

Класс BitSet

  • java.lang.Object
    • java.util.BitSet
Все реализуемые интерфейсы:
Serializable, Cloneable

public class BitSet
extends Object
implements Cloneable, Serializable

Этот класс реализует вектор битов, который растёт по мере необходимости. Каждый компонент набора битов имеет значение boolean. Битами набора битов индексируются неотрицательные целые числа. Отдельные индексированные биты могут быть прочитаны, установлены или сброшены. Один набор битов может быть использован для изменения содержимого другого набора битов с помощью логических операций И, ИЛИ и ИСКЛЮЧАЮЩЕЕ ИЛИ.

По умолчанию все биты в наборе изначально имеют значение false.

Каждый набор битов имеет текущий размер, который представляет собой количество битов, которые в данный момент используются набором битов. Обратите внимание, что размер связан с реализацией набора битов, поэтому он может изменяться при изменении реализации. Длина набора битов относится к логической длине набора битов и определяется независимо от реализации.

Если не указано иное, передача null-параметра в любой из методов набора битов приведёт к NullPointerException.

Набор битов не является потокобезопасным без внешней синхронизации.

С:
JDK1.0
См. также:
Формат сериализации

Конструкторы

Конструктор и описание
BitSet()

Создаёт новый набор битов.

BitSet(int nbits)

Создаёт набор битов, размер которого достаточно велик, чтобы явно представлять биты с индексами в диапазоне от 0 до nbits-1.

Методы

Модификатор и тип Метод и описание
void and(BitSet set)

Выполняет логическое И для этого набора битов с аргументом-набором битов.

void andNot(BitSet set)

Сбрасывает все биты в этом наборе битов, соответствующие битам, установленным в заданном наборе битов.

int cardinality()

Возвращает количество битов, установленных в true в этом наборе битов.

void clear()

Устанавливает все биты в этом наборе битов в false.

void clear(int bitIndex)

Устанавливает бит, указанный индексом, в false.

void clear(int fromIndex, int toIndex)

Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключая) в false.

Object clone()

Клонирование этого набора битов создаёт новый набор битов, равный ему.

boolean equals(Object obj)

Сравнивает этот объект с указанным объектом.

void flip(int bitIndex)

Устанавливает бит по указанному индексу в дополнение к его текущему значению.

void flip(int fromIndex, int toIndex)

Устанавливает каждый бит от указанного fromIndex (включительно) до указанного toIndex (исключая) в дополнение к его текущему значению.

boolean get(int bitIndex)

Возвращает значение бита с указанным индексом.

BitSet get(int fromIndex, int toIndex)

Возвращает новый набор битов, составленный из битов этого набора битов от fromIndex (включительно) до toIndex (исключая).

int hashCode()

Возвращает хэш-код для этого набора битов.

boolean intersects(BitSet set)

Возвращает true, если указанный набор битов содержит биты, установленные в true, которые также установлены в true в этом наборе битов.

boolean isEmpty()

Возвращает true, если этот набор битов не содержит битов, установленных в true.

int length()

Возвращает "логический размер" этого набора битов: индекс самого старшего установленного бита в наборе битов плюс единица.

int nextClearBit(int fromIndex)

Возвращает индекс первого бита, установленного в false, который встречается на или после указанного начального индекса.

int nextSetBit(int fromIndex)

Возвращает индекс первого бита, установленного в true, который встречается на или после указанного начального индекса.

void or(BitSet set)

Выполняет логическое ИЛИ для этого набора битов с аргументом-набором битов.

int previousClearBit(int fromIndex)

Возвращает индекс ближайшего бита, установленного в false, который встречается на или до указанного начального индекса.

int previousSetBit(int fromIndex)

Возвращает индекс ближайшего бита, установленного в true, который встречается на или до указанного начального индекса.

void set(int bitIndex)

Устанавливает бит по указанному индексу в true.

void set(int bitIndex, boolean value)

Устанавливает бит по указанному индексу в указанное значение.

void set(int fromIndex, int toIndex)

Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключая) в true.

void set(int fromIndex, int toIndex, boolean value)

Устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключая) в указанное значение.

int size()

Возвращает количество битов, фактически используемых этим набором битов для представления значений битов.

IntStream stream()

Возвращает поток индексов, для которых этот набор битов содержит бит в установленном состоянии.

byte[] toByteArray()

Возвращает новый массив байтов, содержащий все биты в этом наборе битов.

long[] toLongArray()

Возвращает новый массив длинных целых чисел, содержащий все биты в этом наборе битов.

String toString()

Возвращает строковое представление этого набора битов.

static BitSet valueOf(byte[] bytes)

Возвращает новый набор битов, содержащий все биты в заданном массиве байтов.

static BitSet valueOf(ByteBuffer bb)

Возвращает новый набор битов, содержащий все биты в заданном буфере байтов между его позицией и пределом.

static BitSet valueOf(long[] longs)

Возвращает новый набор битов, содержащий все биты в заданном массиве длинных целых чисел.

static BitSet valueOf(LongBuffer lb)

Возвращает новый набор битов, содержащий все биты в заданном буфере длинных целых чисел между его позицией и пределом.

void xor(BitSet set)

Выполняет логическое ИСКЛЮЧАЮЩЕЕ ИЛИ для этого набора битов с аргументом-набором битов.

Методы, унаследованные от класса java.lang.Object

finalize, getClass, notify, notifyAll, wait, wait, wait

Конструкторы

BitSet

public BitSet()

Создаёт новый битсет. Все биты изначально false.

BitSet

public BitSet(int nbits)

Создаёт битсет, размер которого достаточен для явного представления битов с индексами в диапазоне от 0 до nbits-1. Все биты изначально false.

Параметры:
nbits - начальный размер битсета
Исключения:
NegativeArraySizeException - если указанный начальный размер отрицательный

Методы

valueOf

public static BitSet valueOf(long[] longs)

Возвращает новый битсет, содержащий все биты в заданном массиве long.

Более точно,
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, используемый в качестве начальных битов нового битсета
Возвращает:
битсет, содержащий все биты в массиве long
С момента:
1.7

valueOf

public static BitSet valueOf(LongBuffer lb)

Возвращает новый битсет, содержащий все биты в заданном буфере long между его позицией и пределом.

Более точно,
BitSet.valueOf(lb).get(n) == ((lb.get(lb.position()+n/64) & (1L<<(n%64))) != 0)
для всех n < 64 * lb.remaining().

Буфер long не изменяется этим методом, и ссылка на буфер не сохраняется битсетом.

Параметры:
lb - буфер long, содержащий представление последовательности битов в формате little-endian между его позицией и пределом, используемый в качестве начальных битов нового битсета
Возвращает:
битсет, содержащий все биты в буфере в указанном диапазоне
С момента:
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, используемый в качестве начальных битов нового битсета
Возвращает:
битсет, содержащий все биты в массиве байтов
С момента:
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 между его позицией и пределом, используемый в качестве начальных битов нового битсета
Возвращает:
битсет, содержащий все биты в буфере в указанном диапазоне
С момента:
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, содержащий все биты в этом битсете.

Более точно, если
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 - если указанный индекс отрицательный
С момента:
JDK1.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 - если указанный индекс отрицательный
С момента:
JDK1.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()

Устанавливает все биты в этом BitSet в значение 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
     }
 }
Параметры:
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()

Возвращает true, если этот BitSet не содержит битов, установленных в true.

Возвращает:
булево значение, указывающее, пуст ли этот BitSet
С:
1.4

intersects

public boolean intersects(BitSet set)

Возвращает true, если указанный 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);
 }
Обратите внимание, что хэш-код изменяется, если набор битов изменяется.
Переопределяет:
hashCode в классе Object
Возвращает:
значение хэш-кода для этого набора битов
См. также:
Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

size

public int size()

Возвращает количество битов пространства, фактически используемых этим BitSet для представления значений битов. Максимальный элемент в наборе — это элемент с индексом size - 1.

Возвращает:
количество битов в текущем наборе битов

equals

public boolean equals(Object obj)

Сравнивает этот объект с указанным объектом. Результат — true тогда и только тогда, когда аргумент не null и является объектом набора битов, который имеет ровно тот же набор битов, установленных в true, что и этот набор битов. То есть для каждого неотрицательного int индекса k,

((BitSet)obj).get(k) == this.get(k)
должно быть true. Текущие размеры двух наборов битов не сравниваются.

Переопределяет:
equals в классе Object
Параметры:
obj - объект для сравнения
Возвращает:
true если объекты одинаковые; false в противном случае
См. также:
size()

clone

public Object clone()

Клонирование этого BitSet создаёт новый BitSet , который ему равен. Клон набора битов — это другой набор битов, у которого ровно те же биты установлены в true , что и в этом наборе битов.

Переопределяет:
clone в классе Object
Возвращает:
клон этого набора битов
См. также:
size()

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}".
Переопределяет:
toString в классе Object
Возвращает:
строковое представление этого набора битов

stream

public IntStream stream()

Возвращает поток индексов, для которых этот BitSet содержит бит в состоянии набора. Индексы возвращаются в порядке возрастания. Размер потока равен количеству битов в состоянии набора, равному значению, возвращаемому методом cardinality().

Набор битов должен оставаться неизменным во время выполнения терминальной операции потока. В противном случае результат терминальной операции потока не определён.

Возвращает:
поток целых чисел, представляющих индексы набора
С:
1.8

© 1993, 2020, 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API