|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjava.util.BitSet
public class BitSet
此类实现了一个按需增长的位向量。位 set 的每个组件都有一个 boolean 值。用非负的整数将 BitSet 的位编入索引。可以对每个编入索引的位进行测试、设置或者清除。通过逻辑与、逻辑或和逻辑异或操作,可以使用一个 BitSet 修改另一个 BitSet 的内容。
默认情况下,set 中所有位的初始值都是 false。
每个位 set 都有一个当前大小,也就是该位 set 当前所用空间的位数。注意,这个大小与位 set 的实现有关,所以它可能随实现的不同而更改。位 set 的长度与位 set 的逻辑长度有关,并且是与实现无关而定义的。
除非另行说明,否则将 null 参数传递给 BitSet 中的任何方法都将导致 NullPointerException。
在没有外部同步的情况下,多个线程操作一个 BitSet 是不安全的。
| 构造方法摘要 | |
|---|---|
BitSet()
创建一个新的位 set。 |
|
BitSet(int nbits)
创建一个位 set,它的初始大小足以显式表示索引范围在 0 到 nbits-1 的位。 |
|
| 方法摘要 | |
|---|---|
void |
and(BitSet set)
对此目标位 set 和参数位 set 执行逻辑与操作。 |
void |
andNot(BitSet set)
清除此 BitSet 中所有的位,其相应的位在指定的 BitSet 中已设置。 |
int |
cardinality()
返回此 BitSet 中设置为 true 的位数。 |
void |
clear()
将此 BitSet 中的所有位设置为 false。 |
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,它由此 BitSet 中从 fromIndex(包括)到 toIndex(不包括)范围内的位组成。 |
int |
hashCode()
返回此位 set 的哈希码值。 |
boolean |
intersects(BitSet set)
如果指定的 BitSet 中有设置为 true 的位,并且在此 BitSet 中也将其设置为 true,则返回 ture。 |
boolean |
isEmpty()
如果此 BitSet 中没有包含任何设置为 true 的位,则返回 ture。 |
int |
length()
返回此 BitSet 的“逻辑大小”:BitSet 中最高设置位的索引加 1。 |
int |
nextClearBit(int fromIndex)
返回第一个设置为 false 的位的索引,这发生在指定的起始索引或之后的索引上。 |
int |
nextSetBit(int fromIndex)
返回第一个设置为 true 的位的索引,这发生在指定的起始索引或之后的索引上。 |
void |
or(BitSet set)
对此位 set 和位 set 参数执行逻辑或操作。 |
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 表示位值时实际使用空间的位数。 |
String |
toString()
返回此位 set 的字符串表示形式。 |
void |
xor(BitSet set)
对此位 set 和位 set 参数执行逻辑异或操作。 |
| 从类 java.lang.Object 继承的方法 |
|---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
| 构造方法详细信息 |
|---|
public BitSet()
false。
public BitSet(int nbits)
0 到 nbits-1 的位。所有的位初始均为 false。
nbits - 位 set 的初始大小。
NegativeArraySizeException - 如果指定的初始大小为负。| 方法详细信息 |
|---|
public void flip(int bitIndex)
bitIndex - 要翻转位的索引。
IndexOutOfBoundsException - 如果指定的索引为负。
public void flip(int fromIndex,
int 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 - 要设置的 boolean 值。
IndexOutOfBoundsException - 如果指定的索引为负。
public void set(int fromIndex,
int toIndex)
true。
fromIndex - 第一个要设置位的索引。toIndex - 最后一个要设置位之后那个位的索引。
IndexOutOfBoundsException - 如果 fromIndex 为负,或者 toIndex 为负,或者 fromIndex 大于 toIndex。
public void set(int fromIndex,
int toIndex,
boolean value)
fromIndex - 第一个要设置位的索引。toIndex - 最后一个要设置位之后那个位的索引value - 所选择的位上要设置的值
IndexOutOfBoundsException - 如果 fromIndex 为负,或者 toIndex 为负,或者 fromIndex 大于 toIndex。public void clear(int bitIndex)
false。
bitIndex - 要清除位的索引。
IndexOutOfBoundsException - 如果指定的索引为负。
public void clear(int fromIndex,
int toIndex)
false。
fromIndex - 第一个要清除位的索引。toIndex - 最后一个要清除位之后那个位的索引。
IndexOutOfBoundsException - 如果 fromIndex 为负,或者 toIndex 为负,或者 fromIndex 大于 toIndex。public void clear()
false。
public boolean get(int bitIndex)
BitSet 中索引 bitIndex 处的位,则返回 true;否则结果为 false。
bitIndex - 位索引。
IndexOutOfBoundsException - 如果指定的索引为负。
public BitSet get(int fromIndex,
int toIndex)
fromIndex - 第一个要包括位的索引。toIndex - 最后一个要包括位之后那个位的索引。
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 - 开始检查的索引(包括)。
IndexOutOfBoundsException - 如果指定的索引为负。public int nextClearBit(int fromIndex)
false 的位的索引,这发生在指定的起始索引或之后的索引上。
fromIndex - 开始检查的索引(包括)。
IndexOutOfBoundsException - 如果指定的索引为负。public int length()
BitSet 的“逻辑大小”:BitSet 中最高设置位的索引加 1。如果 BitSet 中不包含任何设置位,则返回零。
BitSet 的逻辑大小。public boolean isEmpty()
BitSet 中没有包含任何设置为 true 的位,则返回 ture。
BitSet 是否为空的 boolean 值。public boolean intersects(BitSet set)
BitSet 中有设置为 true 的位,并且在此 BitSet 中也将其设置为 true,则返回 ture。
set - 要与其交叉的 BitSet
BitSet 与指定的 BitSet 是否存在交叉的 boolean 值。public int cardinality()
BitSet 中设置为 true 的位数。
BitSet 中设置为 true 的位数。public void and(BitSet set)
true,并且位 set 参数中对应位的值也为 true 时才修改此位 set,这样其内每个位的值均为 true。
set - 一个位 set。public void or(BitSet set)
true,或者位 set 参数中对应位的值为 true 时才修改此位 set,这样其内该位的值为 true。
set - 一个位 set。public void xor(BitSet set)
true:
true,并且参数对应位的值为 false。
false,并且参数对应位的值为 true。
set - 一个位 set。public void andNot(BitSet set)
BitSet 中所有的位,其相应的位在指定的 BitSet 中已设置。
set - 用来屏蔽此 BitSet 的 BitSet。public int hashCode()
BitSet 中已经设置的位。计算其哈希码的算法可以描述如下。
假定 BitSet 中的位将存储在一个 long 型的数组(比方说叫 words)中,那么当且仅当表达式
((k>>6) < words.length) && ((words[k>>6] & (1L << (bit & 0x3F))) != 0)为 ture 时,才在
BitSet 中设置位 k(对于非负的 k 值)。然后以下定义的 hashCode 方法才是实际算法的正确实现:
public int hashCode() {
long h = 1234;
for (int i = words.length; --i >= 0; ) {
h ^= words[i] * (i + 1);
}
return (int)((h >> 32) ^ h);
}
注意,如果位的设置改变,则哈希码值也将发生更改。
重写 Object 的 hashCode 方法。
Object 中的 hashCodeObject.equals(java.lang.Object),
Hashtablepublic int size()
BitSet 表示位值时实际使用空间的位数。set 中值最大的元素是第 size - 1 个元素。
public boolean equals(Object obj)
null,并且是一个与此位 set 有着完全相同的位 set 设置(为 true)的 Bitset 对象时,结果才为 true。也就是说,对于每个非负的 int 索引 k,
((BitSet)obj).get(k) == this.get(k)一定为 ture。两个位 set 的当前大小不用进行比较。
重写 Object 的 equals 方法。
Object 中的 equalsobj - 要与之比较的对象。
true;否则返回 false。size()public Object clone()
BitSet,生成一个与之相等的新 BitSet。复制得到的是另一个位 set,它与此位 set 有着完全相同的、设置为 true)的位。
重写 Object 的 clone 方法。
Object 中的 clonesize()public String toString()
BitSet 中包含的、处于已设置状态的每个位的索引,在结果中会包含这些索引的十进制表示形式。这些索引是按从低到高的顺序列出的、之间用 "," 分隔(一个逗号加一个空格),并用括号括起来,结果形成了一组整数的常用数学符号。
重写 Object 的 toString 方法。
示例:
BitSet drPepper = new BitSet();现在
drPepper.toString() 返回 "{}"。
drPepper.set(2);现在
drPepper.toString() 返回 "{2}"。
drPepper.set(4); drPepper.set(10);现在
drPepper.toString() 返回 "{2, 4, 10}"。
Object 中的 toString
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。