Java プラットフォーム 1.2

java.util
クラス BitSet

java.lang.Object
  |
  +--java.util.BitSet

public class BitSet
extends Object
implements Cloneable, Serializable

このクラスは、必要に応じて大きくなるビットベクトルを実装します。ビットセットの各要素は、boolean 値を持ちます。BitSet のビットには、負でない整数のインデックスが付けられます。インデックスが付けられた個別のビットは、試験したり、設定したり、クリアしたりできます。また、論理積、包含的論理和、および排他的論理和の演算を行うと、ある BitSet を使って別の BitSet の内容を変更できます。

デフォルトでは、セットのすべてのビットは初期値として false を持ちます。

ビットセットには、現サイズがあります。これは、そのビットセットによって現在使用されているスペースのビット数です。このサイズはビットセットの実装と関連するので、サイズは実装によって変わる場合があります。ビットセットの長さはビットセットの論理的な長さと関連し、実装とは関係なく定義されます。

導入されたバージョン:
JDK1.0
関連項目:
直列化された形式

コンストラクタの概要
BitSet()
          新しいビットセットを作成します。
BitSet(int nbits)
          0nbits-1 の範囲のインデックスを持つビットを明示的に表すために十分な初期サイズを持つビットセットを作成します。
 
メソッドの概要
 void and(BitSet set)
          ターゲットビットセットと引数ビットセットの論理積を取ります。
 void andNot(BitSet set)
          対応するビットが指定された BitSet に設定されている、BitSet のビットをすべてクリアします。
 void clear(int bitIndex)
          インデックスで指定されたビットを false に設定します。
 Object clone()
          BitSet を複製することで、同等な新しい BitSet を作成します。
 boolean equals(Object obj)
          オブジェクトと指定されたオブジェクトを比較します。
 boolean get(int bitIndex)
          指定されたインデックスを持つビットの値を返します。
 int hashCode()
          ビットセットのハッシュコード値を返します。
 int length()
          BitSet の「論理サイズ」、つまり BitSet の最上位セットビットのインデックスに 1 を加えた値を返します。
 void or(BitSet set)
          ビットセットとビットセット引数の論理和を取ります。
 void set(int bitIndex)
          インデックスで指定されたビットを true に設定します。
 int size()
          BitSet でビット値を表すために実際に使用しているビットの数を返します。
 String toString()
          ビットセットの文字列表現を返します。
 void xor(BitSet set)
          ビットセットとビットセット引数の排他的論理和を取ります。
 
クラス java.lang.Object から継承したメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

BitSet

public BitSet()
新しいビットセットを作成します。ビットの初期値はすべて false です。

BitSet

public BitSet(int nbits)
0nbits-1 の範囲のインデックスを持つビットを明示的に表すために十分な初期サイズを持つビットセットを作成します。ビットの初期値はすべて false です。
パラメータ:
nbits - ビットセットの初期サイズ
例外:
NegativeArraySizeException - 指定された初期サイズが負の場合
メソッドの詳細

length

public int length()
BitSet の「論理サイズ」、つまり BitSet の最上位セットビットのインデックスに 1 を加えた値を返します。
戻り値:
BitSet の論理サイズ
導入されたバージョン:
JDK1.2

set

public void set(int bitIndex)
インデックスで指定されたビットを true に設定します。
パラメータ:
bitIndex - ビットインデックス
例外:
IndexOutOfBoundsException - 指定されたインデックスが負の場合
導入されたバージョン:
JDK1.0

clear

public void clear(int bitIndex)
インデックスで指定されたビットを false に設定します。
パラメータ:
bitIndex - クリアするビットのインデックス
例外:
IndexOutOfBoundsException - 指定されたインデックスが負の場合
導入されたバージョン:
JDK1.0

andNot

public void andNot(BitSet set)
対応するビットが指定された BitSet に設定されている、BitSet のビットをすべてクリアします。
パラメータ:
set - この BitSet をマスクするための BitSet
導入されたバージョン:
JDK1.2

get

public boolean get(int bitIndex)
指定されたインデックスを持つビットの値を返します。この BitSetbitIndex のインデックスを持つビットが設定されている場合、値は true です。そうでない場合は false です。
パラメータ:
bitIndex - ビットインデックス
戻り値:
指定されたインデックスを持つビットの値
例外:
IndexOutOfBoundsException - 指定されたインデックスが負の場合

and

public void and(BitSet set)
ターゲットビットセットと引数ビットセットの論理積を取ります。このビットセットの各ビットの初期値が true で、ビットセット引数の対応するビットの初期値も true の場合に限り、このビットセットが変更され、その各ビットの値が true になります。
パラメータ:
set - ビットセット

or

public void or(BitSet set)
ビットセットとビットセット引数の論理和を取ります。このビットセットのビットの値が true であったか、ビットセット引数の対応するビットの値が true である場合に限り、このビットセットが変更され、そのビットの値が true になります。
パラメータ:
set - ビットセット

xor

public void xor(BitSet set)
ビットセットとビットセット引数の排他的論理和を取ります。次のどれかの条件が成り立つ場合に限り、このビットセットが変更され、そのビットの値が true になります。
パラメータ:
set - ビットセット

hashCode

public int hashCode()
ビットセットのハッシュコード値を返します。ハッシュコードは、この BitSet 内に設定されているビットによってのみ決まります。ハッシュコードを計算するアルゴリズムは、次のように記述できます。

たとえば、bits という long 型整数値の配列に、BitSet のビットが格納されるとします。そして、k が負でない値で、

((k>>6) < bits.length) && ((bits[k>>6] & (1L << (bit & 0x3F))) != 0)
という式が成り立つ場合に限り、BitSet にビット k が設定されます。この場合、次のように hashCode メソッドを定義すると、実際のアルゴリズムの正しい実装になります。
 public synchronized int hashCode() {
      long h = 1234;
      for (int i = bits.length; --i >= 0; ) {
           h ^= bits[i] * (i + 1);
      }
      return (int)((h >> 32) ^ h);
 }
ビットの設定が変わると、ハッシュコード値は変更されます。

このメソッドは、ObjecthashCode メソッドをオーバーライドします。

戻り値:
このビットセットのハッシュコード値
オーバーライド:
クラス Object 内の hashCode

size

public int size()
BitSet でビット値を表すために実際に使用しているビットの数を返します。このセットで最大の要素は「サイズ」で、これが第一要素です。
戻り値:
ビットセットに現在あるビットの数

equals

public boolean equals(Object obj)
オブジェクトと指定されたオブジェクトを比較します。引数が null ではなく、このビットセットとまったく同じ true のビットのセットを持つ Bitset オブジェクトである場合に限り、結果は true です。つまり、負でない int 型のインデックス k に対して、
((BitSet)obj).get(k) == this.get(k)
が成り立たなければなりません。2 つのビットセットの現在のサイズは比較されません。

このメソッドは、Objectequals メソッドをオーバーライドします。

パラメータ:
obj - 比較対象のオブジェクト
戻り値:
2 つのオブジェクトが同等である場合は true、そうでない場合は false
オーバーライド:
クラス Object 内の equals
関連項目:
size()

clone

public Object clone()
BitSet を複製することで、同等な新しい BitSet を作成します。このビットセットの複製は、このビットセットとまったく同じ true のビットを持ち、現在のサイズが同じである別のビットセットです。

このメソッドは、Objectclone メソッドをオーバーライドします。

戻り値:
このビットセットの複製
オーバーライド:
クラス Object 内の clone
関連項目:
size()

toString

public String toString()
ビットセットの文字列表現を返します。この BitSet でビットが設定状態で保持されているインデックスごとに、そのインデックスの 10 進表現が結果に含まれます。こうしたインデックスは、最下位から最上位の順序で並べられ、「, 」(コンマとスペース) で区切って中カッコで囲まれます。このため、整数セットの通常の数値表記になります。

このメソッドは、ObjecttoString メソッドをオーバーライドします。

例:

 BitSet drPepper = new BitSet();
drPepper.toString() が「{}」を返します。

 drPepper.set(2);
drPepper.toString() が「{2}」を返します。

 drPepper.set(4);
 drPepper.set(10);
drPepper.toString() が「{2, 4, 10}」を返します。
戻り値:
このビットセットの文字列表現
オーバーライド:
クラス Object 内の toString

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.