Java BitSet类

Java BitSet类

BitSet类创建了一种特殊的数组,用于保存位值。BitSet数组可根据需要增加大小,因此类似于位向量。这是一个遗留类,但在Java 2的1.4版本中进行了彻底的重构。

BitSet定义了以下两个构造函数。

Sr.No. 构造函数和描述
1 BitSet( ) 此构造函数创建一个默认对象。
2 BitSet(int size) 此构造函数允许您指定其初始大小,即它可以容纳的位数。所有位初始化为零。

BitSet实现了Cloneable接口,并定义了下表中列出的方法:

Sr.No. 方法和描述
1 void and(BitSet bitSet) 将调用BitSet对象的内容与bitSet指定的内容进行AND运算。结果被放置到调用的对象中。
2 void andNot(BitSet bitSet) 对于bitSet中的每一位为1的位,调用的BitSet中对应的位被清零。
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。
19 void or(BitSet bitSet) 将调用的 BitSet 对象与指定的 bitSet 执行按位或运算。结果存入调用对象。
20 void set(int index) 设置指定索引处的位。
21 void set(int index, boolean v) 将指定索引处的位设置为传入的值v。如果v为true,则设置该位为1,否则清除该位。
22 void set(int startIndex, int endIndex) 将从startIndex到endIndex的位设置为1。
23 void set(int startIndex, int endIndex, boolean v) 将从startIndex到endIndex的位设置为传入的值v。如果v为true,则设置这些位为1,否则清除这些位。
24 int size( ) 返回调用者BitSet对象中的位数。
25 String toString( ) 返回调用BitSet对象的字符串等效形式。
26 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("\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}

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:
{}

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程