BitSet类可用来创建一个包含位值的特殊类型的数组。 BitSet数组可以根据需要增加大小。 这使它类似于位向量。 这是一个遗留类,但它已在Java 2 1.4版中完全重新设计。
BitSet类定义了以下两个构造函数。
编号
构造函数
说明
1
BitSet()
此构造函数创建一个默认对象。
2
BitSet(int size)
此构造函数可指定其初始大小,即它可以容纳的位数。 所有位都初始化为零。
BitSet类实现Cloneable接口并定义下表中列出的方法 -
编号
方法
说明
1
void and(BitSet bitSet)
使用bitSet指定的内容调用BitSet对象的内容,结果放入调用对象。
2
void andNot(BitSet bitSet)
对于bitSet中的每个1位,相应位设置为0。
3
int cardinality()
返回调用对象中的设置位数。
4
void clear()
所有位都归零。
5
void clear(int index)
将索引指定的位置归零。
6
void clear(int startIndex, int endIndex)
将startIndex到endIndex中的位归零。
7
Object clone()
复制调用的BitSet对象。
8
boolean equals(Object bitSet)
如果调用位集等效于bitSet中传递的位,则返回true。 否则该方法返回false。
9
void flip(int index)
反转索引指定的位。
10
void flip(int startIndex, int endIndex)
将startIndex到endIndex中的位反转。
11
boolean get(int index)
返回指定索引处的位的当前状态。
12
BitSet get(int startIndex, int endIndex)
返回一个由startIndex和endIndex中的位组成的BitSet对象,调用对象不会更改。
13
int hashCode()
返回调用对象的哈希码。
14
boolean intersects(BitSet bitSet)
如果调用对象和bitSet中的至少一对相应位为1,则返回true。
15
boolean isEmpty()
如果调用对象中的所有位都为零,则返回true。
16
int length()
返回保存调用BitSet内容所需的位数。 该值由最后1位的位置确定。
17
int nextClearBit(int startIndex)
从startIndex指定的索引开始,返回下一个零位的索引(即下一个零位)。
18
int nextSetBit(int startIndex)
从startIndex指定的索引开始,返回下一个设置位(即下一个1位)的索引。 如果未设置位,则返回-1。
19
void or(BitSet bitSet)
使用bitSet指定的内容调用BitSet对象的内容。 结果放入调用对象。
20
void set(int index)
设置索引指定的位。
21
void set(int index, boolean v)
将index指定的位设置为v中传递的值,True表示设置该位,false表示清除该位。
22
void set(int startIndex, int endIndex)
设置从startIndex到endIndex的位。
23
void set(int startIndex, int endIndex, boolean v)
将startIndex到endIndex中的位设置为v中传递的值,true表示设置位,false表示清除位。
24
int size()
返回调用BitSet对象中的位数。
25
String toString()
返回调用BitSet对象的等效字符串。
25
void xor(BitSet bitSet)
使用bitSet指定的内容调用BitSet对象的内容。 结果放入调用对象。
示例
以下程序说明了此数据结构支持的几种方法 -
import java.util.BitSet;
public class BitSetDemo {
public static void main(String args[]) {
BitSet bits1 = new BitSet(16);
BitSet bits2 = new BitSet(16);
// set some bits
for(int i = 0; i < 16; i++) {
if((i % 2) == 0) bits1.set(i);
if((i % 5) != 0) bits2.set(i);
}
System.out.println("Initial pattern in bits1: ");
System.out.println(bits1);
System.out.println("Initial pattern in bits2: ");
System.out.println(bits2);
// AND bits
bits2.and(bits1);
System.out.println("bits2 AND bits1: ");
System.out.println(bits2);
// OR bits
bits2.or(bits1);
System.out.println("bits2 OR bits1: ");
System.out.println(bits2);
// XOR bits
bits2.xor(bits1);
System.out.println("bits2 XOR bits1: ");
System.out.println(bits2);
}
}
执行上面示例代码,得到以下结果:
Initial pattern in bits1:
{0, 2, 4, 6, 8, 10, 12, 14}
Initial pattern in bits2:
{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}
bits2 AND bits1:
{2, 4, 6, 8, 12, 14}
bits2 OR bits1:
{0, 2, 4, 6, 8, 10, 12, 14}
bits2 XOR bits1:
{}
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。