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.