Most visited

Recently visited

Added in API level 1

BitSet

public class BitSet
extends Object implements Cloneable, Serializable

java.lang.Object
   ↳ java.util.BitSet


该类实现了根据需要增长的位向量。 位集的每个组件都有一个boolean值。 BitSet的位由非负整数索引。 各个索引位可以被检查,设置或清除。 一个BitSet可以用来修改另一个BitSet的内容,通过逻辑AND,逻辑OR或逻辑异或操作。

默认情况下,集合中的所有位最初都具有值 false

每个比特集都具有当前大小,该比特集是当前由该比特集使用的空间的比特数。 请注意,大小与位集的实现有关,所以它可能随实现而改变。 位集的长度与位集的逻辑长度有关,并且与实现无关地定义。

除非另有说明,否则将空参数传递给 BitSet任何方法将导致 NullPointerException

在没有外部同步的情况下, BitSet对于多线程应用并不安全。

Summary

Public constructors

BitSet()

创建一个新的位集。

BitSet(int nbits)

创建一个位集,其初始大小足以明确表示索引在 0nbits-1范围内的位。

Public methods

void and(BitSet set)

执行此目标位的设置与参数位设置的逻辑

void andNot(BitSet set)

清除此 BitSet的相应位在指定的 BitSet设置的所有位。

int cardinality()

返回此 BitSet设置为 trueBitSet

void clear(int fromIndex, int toIndex)

将指定的 fromIndex (含)到指定的 toIndex (不包含)的位设置为 false

void clear(int bitIndex)

将索引指定的位设置为 false

void clear()

将此BitSet中的所有位设置为 false

Object clone()

克隆这 BitSet产生一个新的 BitSet是相等的。

boolean equals(Object obj)

将此对象与指定的对象进行比较。

void flip(int bitIndex)

将指定索引处的位设置为其当前值的补码。

void flip(int fromIndex, int toIndex)

将指定的 fromIndex (含)中的每个位设置为指定的 fromIndextoIndex ),以补偿其当前值。

boolean get(int bitIndex)

返回具有指定索引的位的值。

BitSet get(int fromIndex, int toIndex)

返回由 BitSetfromIndex (含)至 toIndex (不包括)的位组成的新的 BitSet

int hashCode()

返回此位集的哈希码值。

boolean intersects(BitSet set)

如果指定的 BitSet任何位设置为 true ,并且在此 BitSet中也设置为 true ,则返回true。

boolean isEmpty()

如果此 BitSet包含设置为 true位,则返回true。

int length()

返回 BitSet的“逻辑大小”: BitSet中最高设置位的 BitSet加上1。

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 fromIndex, int toIndex, boolean value)

将指定的 fromIndex (含)的位设置为指定的 fromIndextoIndex )指定的值。

void set(int fromIndex, int toIndex)

将指定的 fromIndex (含)设置为指定的 toIndex (独占)至 true

void set(int bitIndex)

将指定索引处的位设置为 true

void set(int bitIndex, boolean value)

将指定索引处的位设置为指定值。

int size()

返回此 BitSet实际使用的空间位数,以表示位值。

IntStream stream()

返回这个 BitSet在set状态中包含一个位的索引流。

byte[] toByteArray()

返回包含此位集中所有位的新字节数组。

long[] toLongArray()

返回包含此位集中所有位的新长数组。

String toString()

返回此位集的字符串表示形式。

static BitSet valueOf(long[] longs)

返回包含给定长数组中所有位的新位集。

static BitSet valueOf(byte[] bytes)

返回包含给定字节数组中所有位的新位集。

static BitSet valueOf(ByteBuffer bb)

返回包含给定字节缓冲区中位置和极限之间所有位的新位集。

static BitSet valueOf(LongBuffer lb)

返回一个新的位集,其中包含位置和极限之间给定长缓冲区中的所有位。

void xor(BitSet set)

使用位设置参数执行该位设置的逻辑 异或

Inherited methods

From class java.lang.Object

Public constructors

BitSet

Added in API level 1
BitSet ()

创建一个新的位集。 所有位最初都是false

BitSet

Added in API level 1
BitSet (int nbits)

创建一个位集,其初始大小足以显式表示索引在0nbits-1范围内的位。 所有位最初都是false

Parameters
nbits int: the initial size of the bit set
Throws
NegativeArraySizeException if the specified initial size is negative

Public methods

and

Added in API level 1
void and (BitSet set)

执行此目标位的设置与参数位设置的逻辑 该位集被修改,使得其中的每个位的值都为true当且仅当它们最初具有值true并且位设置参数中的对应位也具有值true

Parameters
set BitSet: a bit set

andNot

Added in API level 1
void andNot (BitSet set)

清除此 BitSet的相应位在指定的 BitSet设置的所有位。

Parameters
set BitSet: the BitSet with which to mask this BitSet

cardinality

Added in API level 1
int cardinality ()

返回此 BitSet设置为 trueBitSet

Returns
int the number of bits set to true in this BitSet

clear

Added in API level 1
void clear (int fromIndex, 
                int toIndex)

将从指定的 fromIndex (含)到指定的 toIndex (独占)的位设置为 false

Parameters
fromIndex int: index of the first bit to be cleared
toIndex int: index after the last bit to be cleared
Throws
IndexOutOfBoundsException if fromIndex is negative, or toIndex is negative, or fromIndex is larger than toIndex

clear

Added in API level 1
void clear (int bitIndex)

将索引指定的位设置为 false

Parameters
bitIndex int: the index of the bit to be cleared
Throws
IndexOutOfBoundsException if the specified index is negative

clear

Added in API level 1
void clear ()

将此BitSet中的所有位设置为 false

clone

Added in API level 1
Object clone ()

克隆这BitSet产生一个新的BitSet是等于它。 该位集合的克隆是另一个位集合,它与该位集合具有完全相同的位,设置为true

Returns
Object a clone of this bit set

也可以看看:

equals

Added in API level 1
boolean equals (Object obj)

将此对象与指定的对象进行比较。 结果是true当且仅当参数不是null并且是一个Bitset对象,该对象具有与此位集合设置为true完全相同的一组位。 也就是说,对于每个非负int索引k

((BitSet)obj).get(k) == this.get(k)
must be true. The current sizes of the two bit sets are not compared.

Parameters
obj Object: the object to compare with
Returns
boolean true if the objects are the same; false otherwise

也可以看看:

flip

Added in API level 1
void flip (int bitIndex)

将指定索引处的位设置为其当前值的补码。

Parameters
bitIndex int: the index of the bit to flip
Throws
IndexOutOfBoundsException if the specified index is negative

flip

Added in API level 1
void flip (int fromIndex, 
                int toIndex)

将指定的每一位 fromIndex (含)到指定 toIndex (独家)为其当前值的补码。

Parameters
fromIndex int: index of the first bit to flip
toIndex int: index after the last bit to flip
Throws
IndexOutOfBoundsException if fromIndex is negative, or toIndex is negative, or fromIndex is larger than toIndex

get

Added in API level 1
boolean get (int bitIndex)

返回具有指定索引的位的值。 该值是true如果与索引的比特bitIndex在该当前设置BitSet ; 否则,结果是false

Parameters
bitIndex int: the bit index
Returns
boolean the value of the bit with the specified index
Throws
IndexOutOfBoundsException if the specified index is negative

get

Added in API level 1
BitSet get (int fromIndex, 
                int toIndex)

返回由 BitSetfromIndex (含)至 toIndexfromIndex )的位组成的新的 BitSet

Parameters
fromIndex int: index of the first bit to include
toIndex int: index after the last bit to include
Returns
BitSet a new BitSet from a range of this BitSet
Throws
IndexOutOfBoundsException if fromIndex is negative, or toIndex is negative, or fromIndex is larger than toIndex

hashCode

Added in API level 1
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);
 }
Note that the hash code changes if the set of bits is altered.

Returns
int the hash code value for this bit set

intersects

Added in API level 1
boolean intersects (BitSet set)

如果指定的 BitSet任何位设置为 true ,并且在此 BitSet中也设置为 true ,则返回true。

Parameters
set BitSet: BitSet to intersect with
Returns
boolean boolean indicating whether this BitSet intersects the specified BitSet

isEmpty

Added in API level 1
boolean isEmpty ()

如果此 BitSet包含设置为 true位,则返回true。

Returns
boolean boolean indicating whether this BitSet is empty

length

Added in API level 1
int length ()

返回BitSet的“逻辑大小”: BitSet中最高设置位的BitSet加上1。 如果BitSet包含设定位,则返回零。

Returns
int the logical size of this BitSet

nextClearBit

Added in API level 1
int nextClearBit (int fromIndex)

返回在指定起始索引处或之后出现的第一个设置为 false位的索引。

Parameters
fromIndex int: the index to start checking from (inclusive)
Returns
int the index of the next clear bit
Throws
IndexOutOfBoundsException if the specified index is negative

nextSetBit

Added in API level 1
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
 }

Parameters
fromIndex int: the index to start checking from (inclusive)
Returns
int the index of the next set bit, or -1 if there is no such bit
Throws
IndexOutOfBoundsException if the specified index is negative

or

Added in API level 1
void or (BitSet set)

执行该位集与位集参数的逻辑 该位集被修改,使得其中的一个位的值为true当且仅当它已经具有值true或位集合参数中的相应位具有值true

Parameters
set BitSet: a bit set

previousClearBit

Added in API level 19
int previousClearBit (int fromIndex)

返回在指定起始索引处或之前出现的最接近位的索引,该位设置为false 如果不存在这样的位,或者如果给出-1作为起始索引,则返回-1

Parameters
fromIndex int: the index to start checking from (inclusive)
Returns
int the index of the previous clear bit, or -1 if there is no such bit
Throws
IndexOutOfBoundsException if the specified index is less than -1

previousSetBit

Added in API level 19
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 int: the index to start checking from (inclusive)
Returns
int the index of the previous set bit, or -1 if there is no such bit
Throws
IndexOutOfBoundsException if the specified index is less than -1

set

Added in API level 1
void set (int fromIndex, 
                int toIndex, 
                boolean value)

将指定的位 fromIndex (含)到指定 toIndex (不包括)到指定的值。

Parameters
fromIndex int: index of the first bit to be set
toIndex int: index after the last bit to be set
value boolean: value to set the selected bits to
Throws
IndexOutOfBoundsException if fromIndex is negative, or toIndex is negative, or fromIndex is larger than toIndex

set

Added in API level 1
void set (int fromIndex, 
                int toIndex)

将指定的位 fromIndex (含)到指定 toIndex (不包括)至 true

Parameters
fromIndex int: index of the first bit to be set
toIndex int: index after the last bit to be set
Throws
IndexOutOfBoundsException if fromIndex is negative, or toIndex is negative, or fromIndex is larger than toIndex

set

Added in API level 1
void set (int bitIndex)

将指定索引处的位设置为 true

Parameters
bitIndex int: a bit index
Throws
IndexOutOfBoundsException if the specified index is negative

set

Added in API level 1
void set (int bitIndex, 
                boolean value)

将指定索引处的位设置为指定值。

Parameters
bitIndex int: a bit index
value boolean: a boolean value to set
Throws
IndexOutOfBoundsException if the specified index is negative

size

Added in API level 1
int size ()

返回此BitSet用于表示位值的实际使用的空间位数。 该集合中的最大元素是大小 - 第一个元素。

Returns
int the number of bits currently in this bit set

stream

Added in API level 24
IntStream stream ()

返回这个BitSet在设置状态中包含一个位的索引流。 指数从最低到最高依次返回。 流的大小是设置状态中的位数,等于cardinality()方法返回的值。

在执行终端流操作期间,该位设置必须保持不变。 否则,终端流操作的结果是未定义的。

Returns
IntStream a stream of integers representing set indices

toByteArray

Added in API level 19
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

Returns
byte[] a byte array containing a little-endian representation of all the bits in this bit set

toLongArray

Added in API level 19
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

Returns
long[] a long array containing a little-endian representation of all the bits in this bit set

toString

Added in API level 1
String toString ()

返回此位集的字符串表示形式。 对于此BitSet在设置状态中包含一位的每个索引,该索引的十进制表示形式都包含在结果中。 这些指数按从低到高的顺序排列,用“,”(逗号和空格)分隔,并用大括号包围,从而形成一组整数的通常数学符号。

例:

 BitSet drPepper = new BitSet();
Now drPepper.toString() returns " {}".

 drPepper.set(2);
Now drPepper.toString() returns " {2}".

 drPepper.set(4);
 drPepper.set(10);
Now drPepper.toString() returns " {2, 4, 10}".

Returns
String a string representation of this bit set

valueOf

Added in API level 19
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))

Parameters
longs long: a long array containing a little-endian representation of a sequence of bits to be used as the initial bits of the new bit set
Returns
BitSet

valueOf

Added in API level 19
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))

Parameters
bytes byte: a byte array containing a little-endian representation of a sequence of bits to be used as the initial bits of the new bit set
Returns
BitSet

valueOf

Added in API level 19
BitSet valueOf (ByteBuffer bb)

返回包含给定字节缓冲区中位置和极限之间所有位的新位集。

更确切地说,
BitSet.valueOf(bb).get(n) == ((bb.get(bb.position()+n/8) & (1<<(n%8))) != 0)
全部为n < 8 * bb.remaining()

该字节缓冲区不会被该方法修改,并且位集不保留对缓冲区的引用。

Parameters
bb ByteBuffer: a byte buffer containing a little-endian representation of a sequence of bits between its position and limit, to be used as the initial bits of the new bit set
Returns
BitSet

valueOf

Added in API level 19
BitSet valueOf (LongBuffer lb)

返回一个新的位集,其中包含位置和极限之间给定长缓冲区中的所有位。

更确切地说,
BitSet.valueOf(lb).get(n) == ((lb.get(lb.position()+n/64) & (1L<<(n%64))) != 0)
全部为n < 64 * lb.remaining()

长缓冲区不会被此方法修改,并且位集不保留对缓冲区的引用。

Parameters
lb LongBuffer: a long buffer containing a little-endian representation of a sequence of bits between its position and limit, to be used as the initial bits of the new bit set
Returns
BitSet

xor

Added in API level 1
void xor (BitSet set)

使用位设置参数执行该位设置的逻辑异或 该位集被修改,以便当且仅当以下语句之一成立时,其中的某一位具有值true

  • The bit initially has the value true, and the corresponding bit in the argument has the value false.
  • The bit initially has the value false, and the corresponding bit in the argument has the value true.

Parameters
set BitSet: a bit set

Hooray!