BitSet类创建一种特殊的数组,其中包含位值, BitSet数组可以根据需要增加大小,这使其类似于位向量,这是一个旧类,但已在Java 2版本1.4中进行了重新设计。
BitSet定义以下两个构造函数。
| Sr.No. | Constructor & Remark |
|---|---|
| 1 |
BitSet() 该构造函数创建一个默认对象。 |
| 2 |
BitSet(int size) 此构造函数允许您指定其初始大小,即它可以容纳的位数。所有位均初始化为零。 |
BitSet实现Cloneable接口并定义下表中列出的方法-
| Sr.No. | Method & Remark |
|---|---|
| 1 |
void and(BitSet bitSet) 将调用BitSet对象的内容与bitSet指定的内容进行"与"运算。 |
| 2 |
void andNot(BitSet bitSet) 对于bitSet中的每个1位,将清除调用BitSet中的相应位。 |
| 3 |
int crdinality() 返回调用对象中设置的位数。 |
| 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 bigSet) 如果调用位集等于在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) 返回一个BitSet,其中包含从startIndex到endIndex的位。 |
| 13 |
int hashCode() 返回调用对象的hashCode。 |
| 14 |
boolean intersects(BitSet bitSet) 如果调用对象和bitSet中的至少一对对应位为1,则返回true。 |
| 15 |
boolean isEmpty() 如果调用对象中的所有位均为零,则返回true。 |
| 16 |
int length() 返回保存调用BitSet的内容所需的位数。 |
| 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,布尔v) 设置从startIndex到endIndex的位,直到v中传递的值。true设置位,false清除位。 |
| 24 |
int size() 返回调用BitSet对象中的位数。 |
| 25 |
String toString() 返回与调用BitSet对象等效的字符串。 |
| 26 |
void xor(BitSet bitSet) X将调用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);
</span><span class="com">//设置一些位</span><span class="pln">
</span><span class="kwd">for</span><span class="pun">(</span><span class="kwd">int</span><span class="pln"> i</span><span class="pun">=</span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun"><</span><span class="pln"> </span><span class="lit">16</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">((</span><span class="pln">i </span><span class="pun">%</span><span class="pln"> </span><span class="lit">2</span><span class="pun">)</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> bits1</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="pln">i</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">if</span><span class="pun">((</span><span class="pln">i </span><span class="pun">%</span><span class="pln"> </span><span class="lit">5</span><span class="pun">)</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln"> bits2</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="pln">i</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Initial pattern in bits1: "</span><span class="pun">);</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">bits1</span><span class="pun">);</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"\nInitial pattern in bits2: "</span><span class="pun">);</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">bits2</span><span class="pun">);</span><span class="pln">
</span><span class="com">//与位</span><span class="pln">
bits2</span><span class="pun">.</span><span class="kwd">and</span><span class="pun">(</span><span class="pln">bits1</span><span class="pun">);</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"\nbits2 AND bits1: "</span><span class="pun">);</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">bits2</span><span class="pun">);</span><span class="pln">
</span><span class="com">//或位</span><span class="pln">
bits2</span><span class="pun">.</span><span class="kwd">or</span><span class="pun">(</span><span class="pln">bits1</span><span class="pun">);</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"\nbits2 OR bits1: "</span><span class="pun">);</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">bits2</span><span class="pun">);</span><span class="pln">
</span><span class="com">//异或位</span><span class="pln">
bits2</span><span class="pun">.</span><span class="pln">xor</span><span class="pun">(</span><span class="pln">bits1</span><span class="pun">);</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"\nbits2 XOR bits1: "</span><span class="pun">);</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="pln">bits2</span><span class="pun">);</span><span class="pln">
}
}
这将产生以下输出-
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: {}