无涯教程-Java - BitSet 类函数

103 阅读3分钟

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">&lt;</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: {}

参考链接

www.learnfk.com/java/java-b…