- 所有已实现的接口:
Serializable,Cloneable
boolean值。 BitSet 的位由非负整数索引。可以检查、设置或清除各个索引位。一个 BitSet 可用于通过逻辑与、逻辑包含或和逻辑异或运算修改另一个 BitSet 的内容。
默认情况下,集合中的所有位最初都具有值 false 。
每个位集都有一个当前大小,这是该位集当前使用的空间位数。请注意,大小与位集的实现有关,因此它可能会随着实现而改变。位集的长度与位集的逻辑长度相关,并且独立于实现而定义。
除非另有说明,否则将 null 参数传递给 BitSet 中的任何方法都将导致 NullPointerException 。
BitSet 对于没有外部同步的多线程使用是不安全的。
- 自从:
- 1.0
- 参见:
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述void执行逻辑AND该目标位设置为参数位设置。void清除此BitSet中的所有位,其对应位已在指定的BitSet中设置。int返回此BitSet中设置为true的位数。voidclear()将此 BitSet 中的所有位设置为false。voidclear(int bitIndex) 将索引指定的位设置为false。voidclear(int fromIndex, int toIndex) 设置从指定的fromIndex(含)到指定的toIndex(不含)到false的位。clone()克隆这个BitSet会产生一个与其相等的新BitSet。boolean将此对象与指定对象进行比较。voidflip(int bitIndex) 将指定索引处的位设置为其当前值的补码。voidflip(int fromIndex, int toIndex) 将指定的fromIndex(含)到指定的toIndex(不含)的每一位设置为其当前值的补码。booleanget(int bitIndex) 返回具有指定索引的位的值。get(int fromIndex, int toIndex) 返回一个新的BitSet由这个BitSet从fromIndex(包括)到toIndex(不包括)的位组成。inthashCode()返回此位集的哈希码值。booleanintersects(BitSet set) 如果指定的BitSet有任何位设置为true,并且在此BitSet中也设置为true,则返回真。booleanisEmpty()如果此BitSet不包含设置为true的位,则返回 true。intlength()返回此BitSet的“逻辑大小”:BitSet中最高设置位的索引加一。intnextClearBit(int fromIndex) 返回在指定起始索引上或之后出现的设置为false的第一个位的索引。intnextSetBit(int fromIndex) 返回在指定起始索引上或之后出现的设置为true的第一个位的索引。void执行逻辑OR该位与位设置参数一起设置。intpreviousClearBit(int fromIndex) 返回在指定起始索引上或之前出现的最近位的索引,该位设置为false。intpreviousSetBit(int fromIndex) 返回在指定起始索引上或之前出现的最近位的索引,该位设置为true。voidset(int bitIndex) 将指定索引处的位设置为true。voidset(int bitIndex, boolean value) 将指定索引处的位设置为指定值。voidset(int fromIndex, int toIndex) 将指定的fromIndex(含)到指定的toIndex(不含)到true的位设置。voidset(int fromIndex, int toIndex, boolean value) 将指定fromIndex(含)到指定toIndex(不含)的位设置为指定值。intsize()返回此BitSet实际使用的空间位数,以表示位值。stream()返回一个索引流,其中BitSet包含一个处于设置状态的位。byte[]返回一个新的字节数组,其中包含此位集中的所有位。long[]返回一个新的 long 数组,其中包含此位集中的所有位。toString()返回此位集的字符串表示形式。static BitSetvalueOf(byte[] bytes) 返回包含给定字节数组中所有位的新位集。static BitSetvalueOf(long[] longs) 返回包含给定 long 数组中所有位的新位集。static BitSetvalueOf(ByteBuffer bb) 返回一个新的位集,其中包含给定字节缓冲区中其位置和限制之间的所有位。static BitSetvalueOf(LongBuffer lb) 返回一个新的位集,其中包含给定长缓冲区中其位置和限制之间的所有位。void执行逻辑XOR该位与位设置参数一起设置。
-
构造方法详细信息
-
BitSet
public BitSet()创建一个新的位集。所有位最初都是false。 -
BitSet
public BitSet(int nbits) 创建一个位集,其初始大小足以显式表示索引在0到nbits-1范围内的位。所有位最初都是false。- 参数:
nbits- 位集的初始大小- 抛出:
NegativeArraySizeException- 如果指定的初始大小为负
-
-
方法详情
-
valueOf
返回包含给定 long 数组中所有位的新位集。更确切地说,
BitSet.valueOf(longs).get(n) == ((longs[n/64] & (1L<<(n%64))) != 0)
对于所有n < 64 * longs.length。此方法等效于
BitSet.valueOf(LongBuffer.wrap(longs))。- 参数:
longs- 一个长数组,包含一个位序列的小端表示,用作新位集的初始位- 返回:
-
一个
BitSet包含长数组中的所有位 - 自从:
- 1.7
-
valueOf
返回一个新的位集,其中包含给定长缓冲区中其位置和限制之间的所有位。更确切地说,
BitSet.valueOf(lb).get(n) == ((lb.get(lb.position()+n/64) & (1L<<(n%64))) != 0)
对于所有n < 64 * lb.remaining()。此方法不修改长缓冲区,并且位集不保留对缓冲区的引用。
- 参数:
lb- 一个长缓冲区,包含其位置和限制之间的位序列的小端表示,用作新位集的初始位- 返回:
-
一个
BitSet包含缓冲区中指定范围内的所有位 - 自从:
- 1.7
-
valueOf
返回包含给定字节数组中所有位的新位集。更确切地说,
BitSet.valueOf(bytes).get(n) == ((bytes[n/8] & (1<<(n%8))) != 0)
对于所有n < 8 * bytes.length。此方法等效于
BitSet.valueOf(ByteBuffer.wrap(bytes))。- 参数:
bytes- 一个字节数组,包含一个位序列的小端表示,用作新位集的初始位- 返回:
-
一个
BitSet包含字节数组中的所有位 - 自从:
- 1.7
-
valueOf
返回一个新的位集,其中包含给定字节缓冲区中其位置和限制之间的所有位。更确切地说,
BitSet.valueOf(bb).get(n) == ((bb.get(bb.position()+n/8) & (1<<(n%8))) != 0)
对于所有n < 8 * bb.remaining()。此方法不修改字节缓冲区,并且位集不保留对缓冲区的引用。
- 参数:
bb- 一个字节缓冲区,包含其位置和限制之间的位序列的小端表示,用作新位集的初始位- 返回:
-
一个
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。- 返回:
- 包含此位集中所有位的小端表示的字节数组
- 自从:
- 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。- 返回:
- 包含此位集中所有位的小端表示的长数组
- 自从:
- 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- 要设置的boolean- 抛出:
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()将此 BitSet 中的所有位设置为false。- 自从:
- 1.4
-
get
public boolean get(int bitIndex) 返回具有指定索引的位的值。如果索引为bitIndex的位当前在此BitSet中设置,则值为true;否则,结果为false。- 参数:
bitIndex- 位索引- 返回:
- 具有指定索引的位的值
- 抛出:
IndexOutOfBoundsException- 如果指定索引为负
-
get
返回一个新的BitSet由这个BitSet从fromIndex(包括)到toIndex(不包括)的位组成。- 参数:
fromIndex- 要包含的第一位的索引toIndex- 要包含的最后一位之后的索引- 返回:
-
来自这个
BitSet范围的新BitSet - 抛出:
IndexOutOfBoundsException- 如果fromIndex为负,或toIndex为负,或fromIndex大于toIndex- 自从:
- 1.4
-
nextSetBit
public int nextSetBit(int fromIndex) 返回在指定起始索引上或之后出现的设置为true的第一个位的索引。如果不存在这样的位,则返回-1。要迭代
BitSet中的true位,请使用以下循环: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。要迭代
BitSet中的true位,请使用以下循环: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的位,则返回 true。- 返回:
-
指示此
BitSet是否为空的boolean - 自从:
- 1.4
-
intersects
如果指定的BitSet有任何位设置为true,并且在此BitSet中也设置为true,则返回真。- 参数:
set-BitSet相交- 返回:
-
指示此
BitSet是否与指定的BitSet相交的boolean - 自从:
- 1.4
-
cardinality
public int cardinality()返回此BitSet中设置为true的位数。- 返回:
-
在这个
BitSet中设置为true的位数 - 自从:
- 1.4
-
and
执行逻辑AND该目标位设置为参数位设置。此位集被修改,以便其中的每个位都具有值true当且仅当它最初都具有值true并且位集参数中的相应位也具有值true。- 参数:
set- 有点设置
-
or
执行逻辑OR该位与位设置参数一起设置。此位集被修改,当且仅当它已经具有值true或位集参数中的相应位具有值true时,其中的位才具有值true。- 参数:
set- 有点设置
-
xor
执行逻辑XOR该位与位设置参数一起设置。当且仅当以下语句之一成立时,该位集被修改,以便其中的位具有值true:- 该位最初的值为
true,参数中对应的位的值为false。 - 该位最初的值为
false,参数中对应的位的值为true。
- 参数:
set- 有点设置
- 该位最初的值为
-
andNot
清除此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实际使用的空间位数,以表示位值。集合中的最大元素是 size - 第一个元素。- 返回:
- 此位集中当前的位数
-
equals
将此对象与指定对象进行比较。结果是true当且仅当参数不是null并且是一个BitSet对象,其设置为true的位集与此位集完全相同。也就是说,对于每个非负int索引k,((BitSet)obj).get(k) == this.get(k)
必须为真。不比较两个位集的当前大小。 -
clone
克隆这个BitSet会产生一个与其相等的新BitSet。位集的克隆是另一个位集,它具有与此位集完全相同的设置为true的位。 -
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
返回一个索引流,其中BitSet包含一个处于设置状态的位。索引按从低到高的顺序返回。流的大小是设置状态中的位数,等于cardinality()方法返回的值。当终端流操作开始时,流绑定到这个位集(具体来说,流的拆分器是 late-binding )。如果在该操作期间修改了位集,则结果未定义。
- 返回:
- 表示集合索引的整数流
- 自从:
- 1.8
-