Java Bitsetクラス

Java 数据结构Java データ構造


Bitsetクラスは、ビット値を保存する特殊なタイプの配列を作成します。BitSetの配列サイズは必要に応じて増加します。これはビットベクトル(vector of bits)に似ています。

これは伝統的なクラスですが、Java 2で完全に再設計されました。

BitSetには2つのコンストラクタが定義されています。

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

BitSet()

2番目のコンストラクタは、ユーザーが初期サイズを指定できます。すべてのビットは0に初期化されます。

BitSet(int size)

BitSetには、Cloneableインターフェースで定義されたメソッドが実装されており、以下の表に示すとおりです:

番号 メソッド説明
1 void and(BitSet set)
このターゲットビットセットと引数のビットセットに対して論理AND演算を実行します。
2 void andNot(BitSet set)
この BitSet 内の、指定された BitSet 内で設定されている対応するビットをすべてクリアします。
3 int cardinality( )
この BitSet 内で true に設定されているビット数を返します。
4 void clear( )
この BitSet のすべてのビットを false に設定します。
5 void clear(int index)
指定されたインデックスのビットを false に設定します。
6 void clear(int startIndex, int endIndex)
指定された startIndex(含む)から指定された toIndex(含まない)までの範囲のビットを false に設定します。
7 Object clone( )
この BitSet をコピーして、それと等しい新しい BitSet を生成します。
8 boolean equals(Object bitSet)
このオブジェクトを指定されたオブジェクトと比較します。
9 void flip(int index)
指定されたインデックスのビットを現在の値の補数に設定します。
10 void flip(int startIndex, int endIndex)
指定された fromIndex(含む)から指定された toIndex(含まない)までの範囲の各ビットを現在の値の補数に設定します。
11 boolean get(int index)
指定されたインデックスのビット値を返します。
12 BitSet get(int startIndex, int endIndex)
この BitSet の fromIndex(含む)から toIndex(含まない)までの範囲のビットで構成される新しい BitSet を返します。
13 int hashCode( )
このビットセットのハッシュコード値を返します。
14 boolean intersects(BitSet bitSet)
指定された BitSet に true に設定されたビットがあり、この BitSet でも true に設定されている場合、true を返します。
15 boolean isEmpty( )
この BitSet に true に設定されたビットが含まれていない場合、true を返します。
16 int length( )
この BitSet の「論理サイズ」を返します:BitSet 内で最も高い設定ビットのインデックスに 1 を加えた値。
17 int nextClearBit(int startIndex)
指定された開始インデックス以降で、false に設定されている最初のビットのインデックスを返します。
18 int nextSetBit(int startIndex)
指定された開始インデックス以降で、true に設定されている最初のビットのインデックスを返します。
19 void or(BitSet bitSet)
このビットセットと引数のビットセットに対して論理OR演算を実行します。
20 void set(int index)
指定されたインデックスのビットを true に設定します。
21 void set(int index, boolean v)
指定されたインデックスのビットを指定された値に設定します。
22 void set(int startIndex, int endIndex)
指定された fromIndex(含む)から指定された toIndex(含まない)までの範囲のビットを true に設定します。
23 void set(int startIndex, int endIndex, boolean v)
指定された fromIndex(含む)から指定された toIndex(含まない)までの範囲のビットを指定された値に設定します。
24 int size( )
この BitSet がビット値を表すために実際に使用しているスペースのビット数を返します。
25 String toString( )
このビットセットの文字列表現を返します。
26 void xor(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:
{}

Java 数据结构Java データ構造

その他の拡張