JavaTM 2 Platform
Std. Ed. v1.3

java.util
クラス BitSet

java.lang.Object
  |
  +--java.util.BitSet
すべての実装インタフェース:
Cloneable, Serializable

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 にセットビットがない場合はゼロを返します。
戻り値:
BitSet の論理サイズ
導入されたバージョン:
1.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
導入されたバージョン:
1.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 メソッドをオーバーライドします。

オーバーライド:
クラス Object 内の equals
パラメータ:
obj - 比較対象のオブジェクト
戻り値:
オブジェクトが同じである場合は true、そうでない場合は false
関連項目:
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
戻り値:
このビットセットの文字列表現

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.