public class BitSet extends Object implements Cloneable, Serializable
boolean价值。一个
BitSet位以非负整数索引。单独的索引位可以检查,设置或清除。一
BitSet可以用来修改另一个
BitSet通过逻辑的内容,逻辑或,异或运算和逻辑。
默认情况下,该组中的所有位最初有价值false。
每一位设置有一个当前的大小,这是目前在使用的位集的空间位的数量。请注意,大小与位集的实现有关,因此它可能会随着实现改变。位集的长度与位集的逻辑长度有关,并独立于实现的定义。
除非另有说明,传递一个null参数中的任何一个BitSet方法将导致一个NullPointerException。
一个BitSet不安全的多线程的使用没有外部同步。
| Constructor and Description |
|---|
BitSet()
创建一个新的位集。
|
BitSet(int nbits)
创建一个点集的初始大小的足够明确表示范围在
0指标位通过
nbits-1。
|
| Modifier and Type | Method and Description |
|---|---|
void |
and(BitSet set)
执行逻辑
和这个目标点位设置的参数设置。
|
void |
andNot(BitSet set)
清除所有在这
BitSet其对应的位被设置在指定的位
BitSet。
|
int |
cardinality()
返回字节集在这
BitSet
true数。
|
void |
clear()
集所有在本
false bitset对象的位。
|
void |
clear(int bitIndex)
设置索引指定
false钻头。
|
void |
clear(int fromIndex, int toIndex)
设置从指定的
fromIndex位(含)到指定的
toIndex(独家)来
false。
|
Object |
clone()
这
BitSet克隆产生的一个新
BitSet等于它。
|
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)
返回一个由比特从这
BitSet从
fromIndex新
BitSet(含)至
toIndex(独家)。
|
int |
hashCode()
返回此位集的哈希代码值。
|
boolean |
intersects(BitSet set)
如果指定的
BitSet已设定
true,任何位也设置为
true这
BitSet返回true。
|
boolean |
isEmpty()
如果这
BitSet不包含位设置为
true返回true。
|
int |
length()
返回逻辑“大小”这
BitSet:在
BitSet最高点的指数加一。
|
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()
返回位空间数量实际上在使用这
BitSet表示位值。
|
IntStream |
stream()
返回一个流指标这
BitSet包含设定状态点。
|
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)
执行逻辑
异或这个点集的点集的论点。
|
public BitSet()
false。
public BitSet(int nbits)
0指标位通过
nbits-1。所有的位都是最初
false。
nbits的比特的初始大小设置
NegativeArraySizeException -如果指定的初始大小为负
public static BitSet valueOf(long[] longs)
更确切地说,BitSet.valueOf(longs).get(n) == ((longs[n/64] & (1L<<(n%64))) != 0)
for所有n < 64 * longs.length。
这种方法相当于BitSet.valueOf(LongBuffer.wrap(longs))。
longs -长数组包含一个序列的比特小端表示作为初始位的新的点集
BitSet含在长排列的所有碎片
public static BitSet valueOf(LongBuffer lb)
更确切地说,BitSet.valueOf(lb).get(n) == ((lb.get(lb.position()+n/64) & (1L<<(n%64))) != 0)
for所有n < 64 * lb.remaining()。
此方法不修改长缓冲区,也没有对该缓冲区保留由位集的引用。
lb -长缓冲区包含一个序列的位置和极限之间的位小端表示,作为初始位的新的点集
BitSet包含在指定的范围内的缓冲区中的所有位
public static BitSet valueOf(byte[] bytes)
更确切地说,BitSet.valueOf(bytes).get(n) == ((bytes[n/8] & (1<<(n%8))) != 0)
for所有n < 8 * bytes.length。
这种方法相当于BitSet.valueOf(ByteBuffer.wrap(bytes))。
bytes -包含一个序列的比特小端表示作为初始位的新的点集的字节数组
BitSet包含字节数组中的所有位
public static BitSet valueOf(ByteBuffer bb)
更确切地说,BitSet.valueOf(bb).get(n) == ((bb.get(bb.position()+n/8) & (1<<(n%8))) != 0)
for所有n < 8 * bb.remaining()。
此方法不修改字节缓冲区,也没有对缓冲区保留由位集的引用。
bb -包含一系列的位置和限位之间小端表示字节缓冲区,作为初始位的新的点集
BitSet包含在指定的范围内的缓冲区中的所有位
public byte[] toByteArray()
更确切地说,如果byte[] bytes = s.toByteArray();
then bytes.length == (s.length()+7)/8和s.get(n) == ((bytes[n/8] & (1<<(n%8))) != 0)
for所有n < 8 * bytes.length。
public long[] toLongArray()
更确切地说,如果long[] longs = s.toLongArray();
then longs.length == (s.length()+63)/64和s.get(n) == ((longs[n/64] & (1L<<(n%64))) != 0)
for所有n < 64 * longs.length。
public void flip(int bitIndex)
bitIndex的比特翻转指数
IndexOutOfBoundsException -如果指定的指数是负的
public void flip(int fromIndex,
int toIndex)
fromIndex(含)到指定的
toIndex(独家)对其当前值的补充。
fromIndex指数的第一位翻转
toIndex指数后的最后一位翻转
IndexOutOfBoundsException -如果
fromIndex是负的,或
toIndex是负的,或
fromIndex大于
toIndex
public void set(int bitIndex)
true。
bitIndex -一位指数
IndexOutOfBoundsException -如果指定的指数是负的
public void set(int bitIndex,
boolean value)
bitIndex -一位指数
value -一个布尔值设置
IndexOutOfBoundsException -如果指定的指数是负的
public void set(int fromIndex,
int toIndex)
fromIndex位(含)到指定的
toIndex(独家)来
true。
fromIndex指数的第一位被设置
toIndex指数后的最后一位被设置
IndexOutOfBoundsException -如果
fromIndex是负的,或
toIndex是负的,或
fromIndex大于
toIndex
public void set(int fromIndex,
int toIndex,
boolean value)
fromIndex位(含)到指定的
toIndex(独家)为指定值。
fromIndex指数的第一位被设置
toIndex指数后的最后一位被设置
value值设置选定的位
IndexOutOfBoundsException -如果
fromIndex是负的,或
toIndex是负的,或
fromIndex大于
toIndex
public void clear(int bitIndex)
false钻头。
bitIndex -位被清除的指标
IndexOutOfBoundsException -如果指定的指数是负的
public void clear(int fromIndex,
int toIndex)
fromIndex位(含)到指定的
toIndex(独家)来
false。
fromIndex指数的第一位被清除
toIndex指数后的最后一位被清除
IndexOutOfBoundsException -如果
fromIndex是负的,或
toIndex是负的,或
fromIndex大于
toIndex
public void clear()
false bitset对象的位。
public boolean get(int bitIndex)
true如果与指数
bitIndex位目前在
BitSet;否则,其结果是
false。
bitIndex -点指数
IndexOutOfBoundsException -如果指定的指数是负的
public BitSet get(int fromIndex, int toIndex)
BitSet从
fromIndex新
BitSet(含)至
toIndex(独家)。
fromIndex指数的第一位包括
toIndex指数后的最后一位包括
BitSet
BitSet
IndexOutOfBoundsException -如果
fromIndex是负的,或
toIndex是负的,或
fromIndex大于
toIndex
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
}
fromIndex -开始检查从指数(含)
-1如果没有这样的点
IndexOutOfBoundsException -如果指定的指数是负的
public int nextClearBit(int fromIndex)
false发生或在指定的起始索引。
fromIndex -开始检查从指数(含)
IndexOutOfBoundsException -如果指定的指数是负的
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
public int previousClearBit(int fromIndex)
false发生或在指定的起始索引。如果没有这样的点存在,或者如果
-1为起始索引,然后
-1返回。
fromIndex -开始检查从指数(含)
-1如果没有这样的点
IndexOutOfBoundsException -如果指定的索引小于
-1
public int length()
BitSet:在
BitSet最高点的指数加一。返回零如果
BitSet不包含设置的位。
BitSet逻辑大小
public boolean isEmpty()
BitSet不包含位设置为
true返回true。
BitSet布尔指示是否为空
public boolean intersects(BitSet set)
BitSet已设定
true,任何位也设置为
true这
BitSet返回true。
set -
BitSet相交
BitSet布尔指示是否与指定的
BitSet
public int cardinality()
true这
BitSet数。
BitSet
true数
public void and(BitSet set)
true当且仅当它最初的价值
true在点对应的位设置参数也有价值
true。
set -点集
public void or(BitSet set)
true当且仅当它是有价值
true或相应的点位设置参数的值
true。
set -点集
public void xor(BitSet set)
true如果持有下列语句:
true,和争论中的相应位的值false。false,和争论中的相应位的值true。set -点集
public void andNot(BitSet set)
BitSet其对应的位被设置在指定的位
BitSet。
set -这
BitSet来掩盖这
BitSet
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)
public int size()
BitSet表示位值。在集合中的最大元素是大小-第一元素。
public boolean equals(Object obj)
true如果只有参数不
null是
Bitset对象,恰好有位设置为
true这位设置相同。那是,每个非负
int指数
k,
((1)obj)。得到(k)= =这让(K)。必须是真实的。当前的两位位集的大小没有被比较。
public Object clone()
BitSet克隆产生的一个新
BitSet等于它。该位设置克隆是另一位具有完全相同的位设置为
true这个点集。
public String toString()
BitSet包含设定状态点,该指数的小数表示包含在结果。该指数是从最低到最高的顺序列出的,分离”, ”(逗号和空格),由括号包围,导致常见的数学符号的一组整数。
例子:
bitset澎泉=新bitset();现在
drPepper.toString()返回“
{}”。
澎泉组(2);现在
drPepper.toString()返回“
{2}”。
澎泉组(4);澎泉组(10);现在
drPepper.toString()返回“
{2, 4, 10}”。
public IntStream stream()
BitSet包含设定状态点。该指数依次返回,从最低到最高。流的大小是在设定状态的比特数,等于价值的
cardinality()方法返回。
在终端流操作的执行过程中,位集必须保持不变。否则,终端流操作的结果是不确定的。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.