JavaTM Platform
Standard Ed. 6

java.util
クラス BitSet

java.lang.Object
  上位を拡張 java.util.BitSet
すべての実装されたインタフェース:
Serializable, Cloneable

public class BitSet
extends Object
implements Cloneable, Serializable

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

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

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

特に明記されていないかぎり、null パラメータを BitSet のメソッドに渡すと、NullPointerException がスローされます。

BitSet が、外部の同期化を行わずにマルチスレッドを使用するのは安全ではありません。

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

コンストラクタの概要
BitSet()
          新規ビットセットを作成します。
BitSet(int nbits)
          0nbits-1 の範囲のインデックスを持つビットを明示的に表すために十分な初期サイズを持つビットセットを作成します。
 
メソッドの概要
 void and(BitSet set)
          ターゲットビットセットと引数ビットセットの論理積を取ります。
 void andNot(BitSet set)
          対応するビットが指定された BitSet に設定されている、BitSet のビットをすべてクリアします。
 int cardinality()
          この BitSet で、true に設定されたビットの数を返します。
 void clear()
          この BitSet のビットをすべて false に設定します。
 void clear(int bitIndex)
          インデックスで指定されたビットを false に設定します。
 void clear(int fromIndex, int toIndex)
          指定された fromIndex (inclusive) から指定された toIndex (exclusive) まで、ビットを false に設定します。
 Object clone()
          BitSet を複製することで、同等な新しい BitSet を作成します。
 boolean equals(Object obj)
          オブジェクトと指定されたオブジェクトを比較します。
 void flip(int bitIndex)
          現在値の補数に指定されたインデックスのビットを設定します。
 void flip(int fromIndex, int toIndex)
          指定された fromIndex (inclusive) から指定された toIndex (exclusive) まで、各ビットをその現在値の補数に設定します。
 boolean get(int bitIndex)
          指定されたインデックスを持つビットの値を返します。
 BitSet get(int fromIndex, int toIndex)
          この BitSet からのビットで構成される新規 BitSetfromIndex (この値を含む) から toIndex (この値を含まない) まで返します。
 int hashCode()
          ビットセットのハッシュコード値を返します。
 boolean intersects(BitSet set)
          この BitSet でも true に設定された、true 設定のビットが、指定された BitSet にある場合、true を返します。
 boolean isEmpty()
          この BitSettrue に設定されたビットが含まれていない場合は、true を返します。
 int length()
          BitSet の「論理サイズ」、つまり BitSet の最上位セットビットのインデックスに 1 を加えた値を返します。
 int nextClearBit(int fromIndex)
          指定された開始インデックス時、またはそのインデックス後に生じる false に設定された最初のビットのインデックスを返します。
 int nextSetBit(int fromIndex)
          指定された開始インデックス時、またはそのインデックス後に生じる true に設定された最初のビットのインデックスを返します。
 void or(BitSet set)
          ビットセットとビットセット引数の論理和を取ります。
 void set(int bitIndex)
          指定されたインデックスのビットを true に設定します。
 void set(int bitIndex, boolean value)
          指定されたインデックスのビットを指定された値に設定します。
 void set(int fromIndex, int toIndex)
          指定された fromIndex (inclusive) から指定された toIndex (exclusive) まで、ビットを true に設定します。
 void set(int fromIndex, int toIndex, boolean value)
          指定された fromIndex (inclusive) から指定された toIndex (exclusive) まで、ビットを指定された値に設定します。
 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 - 指定された初期サイズが負の場合
メソッドの詳細

flip

public void flip(int bitIndex)
現在値の補数に指定されたインデックスのビットを設定します。

パラメータ:
bitIndex - 反転するビットのインデックス
例外:
IndexOutOfBoundsException - 指定されたインデックスが負の場合
導入されたバージョン:
1.4

flip

public void flip(int fromIndex,
                 int toIndex)
指定された fromIndex (inclusive) から指定された toIndex (exclusive) まで、各ビットをその現在値の補数に設定します。

パラメータ:
fromIndex - 反転する最初のビットのインデックス
toIndex - 反転する最後のビットの後ろのインデックス
例外:
IndexOutOfBoundsException - fromIndex が負の値の場合、toIndex が負の値の場合、または fromIndextoIndex より大きい場合
導入されたバージョン:
1.4

set

public void set(int bitIndex)
指定されたインデックスのビットを true に設定します。

パラメータ:
bitIndex - ビットインデックス
例外:
IndexOutOfBoundsException - 指定されたインデックスが負の場合
導入されたバージョン:
JDK1.0

set

public void set(int bitIndex,
                boolean value)
指定されたインデックスのビットを指定された値に設定します。

パラメータ:
bitIndex - ビットインデックス
value - 設定される boolean 値
例外:
IndexOutOfBoundsException - 指定されたインデックスが負の場合
導入されたバージョン:
1.4

set

public void set(int fromIndex,
                int toIndex)
指定された fromIndex (inclusive) から指定された toIndex (exclusive) まで、ビットを true に設定します。

パラメータ:
fromIndex - 設定する最初のビットのインデックス
toIndex - 設定される最後のビットの後ろのインデックス
例外:
IndexOutOfBoundsException - fromIndex が負の値の場合、toIndex が負の値の場合、または fromIndextoIndex より大きい場合
導入されたバージョン:
1.4

set

public void set(int fromIndex,
                int toIndex,
                boolean value)
指定された fromIndex (inclusive) から指定された toIndex (exclusive) まで、ビットを指定された値に設定します。

パラメータ:
fromIndex - 設定する最初のビットのインデックス
toIndex - 設定される最後のビットの後ろのインデックス
value - 選択されたビットを設定する値
例外:
IndexOutOfBoundsException - fromIndex が負の値の場合、toIndex が負の値の場合、または fromIndextoIndex より大きい場合
導入されたバージョン:
1.4

clear

public void clear(int bitIndex)
インデックスで指定されたビットを false に設定します。

パラメータ:
bitIndex - クリアするビットのインデックス
例外:
IndexOutOfBoundsException - 指定されたインデックスが負の場合
導入されたバージョン:
JDK1.0

clear

public void clear(int fromIndex,
                  int toIndex)
指定された fromIndex (inclusive) から指定された toIndex (exclusive) まで、ビットを false に設定します。

パラメータ:
fromIndex - クリアする最初のビットのインデックス
toIndex - クリアされる最後のビットの後ろのインデックス
例外:
IndexOutOfBoundsException - fromIndex が負の値の場合、toIndex が負の値の場合、または fromIndextoIndex より大きい場合
導入されたバージョン:
1.4

clear

public void clear()
この BitSet のビットをすべて false に設定します。

導入されたバージョン:
1.4

get

public boolean get(int bitIndex)
指定されたインデックスを持つビットの値を返します。この BitSetbitIndex のインデックスを持つビットが設定されている場合、値は true です。そうでない場合は false です。

パラメータ:
bitIndex - ビットインデックス
戻り値:
指定されたインデックスを持つビットの値
例外:
IndexOutOfBoundsException - 指定されたインデックスが負の場合

get

public BitSet get(int fromIndex,
                  int toIndex)
この BitSet からのビットで構成される新規 BitSetfromIndex (この値を含む) から toIndex (この値を含まない) まで返します。

パラメータ:
fromIndex - 組み込む最初のビットのインデックス
toIndex - 組み込む最後のビットの後ろのインデックス
戻り値:
この BitSet の範囲からの新規 BitSet
例外:
IndexOutOfBoundsException - fromIndex が負の値の場合、toIndex が負の値の場合、または fromIndextoIndex より大きい場合
導入されたバージョン:
1.4

nextSetBit

public int nextSetBit(int fromIndex)
指定された開始インデックス時、またはそのインデックス後に生じる true に設定された最初のビットのインデックスを返します。該当するビットが存在しない場合は、-1 が返されます。 BitSet 内の true ビットに対して繰り返し処理を実行する場合は、以下のループを使用します。
 for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i+1)) {
     // operate on index i here
 }

パラメータ:
fromIndex - チェックを開始する位置のインデックス (その値も含む)
戻り値:
次のセットビットのインデックス
例外:
IndexOutOfBoundsException - 指定されたインデックスが負の場合
導入されたバージョン:
1.4

nextClearBit

public int nextClearBit(int fromIndex)
指定された開始インデックス時、またはそのインデックス後に生じる false に設定された最初のビットのインデックスを返します。

パラメータ:
fromIndex - チェックを開始する位置のインデックス (その値も含む)
戻り値:
次のクリアビットのインデックス
例外:
IndexOutOfBoundsException - 指定されたインデックスが負の場合
導入されたバージョン:
1.4

length

public int length()
BitSet の「論理サイズ」、つまり BitSet の最上位セットビットのインデックスに 1 を加えた値を返します。BitSet にセットビットがない場合はゼロを返します。

戻り値:
BitSet の論理サイズ
導入されたバージョン:
1.2

isEmpty

public boolean isEmpty()
この BitSettrue に設定されたビットが含まれていない場合は、true を返します。

戻り値:
この BitSet が空かどうかを示す boolean 型
導入されたバージョン:
1.4

intersects

public boolean intersects(BitSet set)
この BitSet でも true に設定された、true 設定のビットが、指定された BitSet にある場合、true を返します。

パラメータ:
set - 交差する BitSet
戻り値:
この BitSet が指定された BitSet と交差するかどうかを示す boolean 型
導入されたバージョン:
1.4

cardinality

public int cardinality()
この BitSet で、true に設定されたビットの数を返します。

戻り値:
この BitSettrue に設定されたビットの数
導入されたバージョン:
1.4

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 - ビットセット

andNot

public void andNot(BitSet set)
対応するビットが指定された BitSet に設定されている、BitSet のビットをすべてクリアします。

パラメータ:
set - この BitSet をマスクするための BitSet
導入されたバージョン:
1.2

hashCode

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

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

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

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

オーバーライド:
クラス Object 内の hashCode
戻り値:
このビットセットのハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

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 Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。