Java-bitset-class

提供:Dev Guides
移動先:案内検索

Java-BitSetクラス

BitSetクラスは、ビット値を保持する特別なタイプの配列を作成します。 BitSet配列は、必要に応じてサイズを増やすことができます。 これにより、ビットのベクトルに似たものになります。 これはレガシークラスですが、Java 2バージョン1.4で完全に再設計されました。

BitSetは、次の2つのコンストラクターを定義します。

Sr.No. Constructor & Description
1

BitSet( )

このコンストラクタはデフォルトのオブジェクトを作成します。

2

BitSet(int size)

このコンストラクターを使用すると、初期サイズ、つまり保持できるビット数を指定できます。 すべてのビットはゼロに初期化されます。

BitSetはCloneableインターフェイスを実装し、次の表に記載されているメソッドを定義します-

Sr.No. Method & Description
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つのペアが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で指定されたものとのORをとります。 結果は呼び出しオブジェクトに配置されます。

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オブジェクトに相当する文字列を返します。

26

void xor(BitSet bitSet)

呼び出し側のBitSetオブジェクトの内容を、bitSetで指定されたものとXORします。 結果は呼び出しオブジェクトに配置されます。

次のプログラムは、このデータ構造でサポートされているメソッドのいくつかを示しています-

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