Java数据结构——位集合(BitSet)
·
转自菜鸟教程。
一个Bitset类创建一种特殊类型的数组来保存位置。Bitset中数组大小会随需要增加。这和位向量(vector of bits)比较类似。这是一个传统的类,但它在Java 2中完全重新设计。
Bitset两个构造方法。
BitSet() //创建一个默认的对象
BitSet(int size) //指定初始大小,所有位初始化为0
BitSet常用方法
| 序号 | 方法 | 解释 |
|---|---|---|
| 1 | void and(BitSet set) | 对此目标位 set 和参数位 set 执行逻辑与操作。 |
| 2 | void or(BitSet bitSet) | 对此位 set 和位 set 参数执行逻辑或操作。 |
| 3 | void clear( ) | 将此 BitSet 中的所有位设置为 false。 |
| 4 | void set(int index) | 将指定索引处的位设置为 true。 |
| 5 | int size( ) | 返回此 BitSet 表示位值时实际使用空间的位数。 |
| BitSet不常用方法 | ||
| 序号 | 方法 | 解释 |
| – | – | – |
| 1 | void andNot(BitSet set) | 清除此 BitSet 中所有的位,其相应的位在指定的 BitSet 中已设置。 |
| 2 | void xor(BitSet bitSet) | 对此位 set 和位 set 参数执行逻辑异或操作。 |
| 3 | void clear( ) | 将此 BitSet 中的所有位设置为 false。 |
| 4 | void clear(int index) | 将索引指定处的位设置为 false。 |
| 5 | void clear(int startIndex, int endIndex) | 将指定的 8startIndex(包括)到指定的 toIndex(不包括)范围内的位设置为 false。 |
| 6 | boolean equals(Object bitSet) | 将此对象与指定的对象进行比较。 |
| 7 | void set(int index, boolean v) | 将指定索引处的位设置为指定的值。 |
| 8 | void set(int startIndex, int endIndex) | 将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的位设置为 true。 |
| 9 | void set(int startIndex, int endIndex, boolean v) | 将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的位设置为指定的值。 |
| 10 | int size( ) | 返回此 BitSet 表示位值时实际使用空间的位数。 |
| 11 | String toString( ) | 返回此位 set 的字符串表示形式。 |
| 实例 | ||
| set方法 |
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%6) != 0) bits2.set(i);
}
System.out.println("Initial pattern in bits1: ");
System.out.println(bits1);
System.out.println("\nInitial pattern in bits2: ");
System.out.println(bits2);
// AND bits
bits2.and(bits1);
System.out.println("\nbits2 AND bits1: ");
System.out.println(bits2);
// OR bits
bits2.or(bits1);
System.out.println("\nbits2 OR bits1: ");
System.out.println(bits2);
// XOR bits
bits2.xor(bits1);
System.out.println("\nbits2 XOR bits1: ");
System.out.println(bits2);
}
}
运行结果
Initial pattern in bits1:
{0, 2, 4, 6, 8, 10, 12, 14} ////这些数字表示第几位为1
Initial pattern in bits2:
{1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 15}
bits2 AND bits1:
{2, 4, 8, 10, 14}
bits2 OR bits1: //bits2:{2, 4, 8, 10, 14} or bits1:{0, 2, 4, 6, 8, 10, 12, 14}
{0, 2, 4, 6, 8, 10, 12, 14}
bits2 XOR bits1: //bits2:{0, 2, 4, 6, 8, 10, 12, 14} or bits1:{0, 2, 4, 6, 8, 10, 12, 14}
{}
更多推荐
所有评论(0)