- 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が、外部の同期化を行わずにマルチ・スレッドを使用するのは安全ではありません。- 導入されたバージョン:
- 1.0
- 関連項目:
- 直列化された形式
-
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 voidand(BitSet set)ターゲット・ビット・セットと引数ビット・セットの論理積を取ります。voidandNot(BitSet set)対応するビットが、指定されたBitSet内に設定されているこのBitSet内のすべてのビットをクリアします。intcardinality()このBitSetで、trueに設定されたビットの数を返します。voidclear()このBitSet内のビットをすべてfalseに設定します。voidclear(int bitIndex)インデックスで指定されたビットをfalseに設定します。voidclear(int fromIndex, int toIndex)指定されたfromIndex(これを含む)から指定されたtoIndex(これを含まない)までのビットをfalseに設定します。Objectclone()このBitSetをクローニングして、それと同等の新しいBitSetを作成します。booleanequals(Object obj)このオブジェクトと指定されたオブジェクトを比較します。voidflip(int bitIndex)現在値の補数に指定されたインデックスのビットを設定します。voidflip(int fromIndex, int toIndex)指定されたfromIndex(これを含む)から指定されたtoIndex(これを含まない)までの各ビットをその現在値の補数に設定します。booleanget(int bitIndex)指定されたインデックスを持つビットの値を返します。BitSetget(int fromIndex, int toIndex)このBitSetからのビットで構成される新規BitSetをfromIndex(これを含む)からtoIndex(これを含まない)まで返します。inthashCode()このビット・セットのハッシュ・コード値を返します。booleanintersects(BitSet set)このBitSetでもtrueに設定された、true設定のビットが、指定されたBitSetにある場合、trueを返します。booleanisEmpty()このBitSetにtrueに設定されたビットが含まれていない場合は、trueを返します。intlength()このBitSetの「論理サイズ」、つまりBitSetの最上位セット・ビットのインデックスに1を加えた値を返します。intnextClearBit(int fromIndex)指定された開始インデックス時、またはそのインデックス後に生じる、falseに設定された最初のビットのインデックスを返します。intnextSetBit(int fromIndex)指定された開始インデックス時、またはそのインデックス後に生じる、trueに設定された最初のビットのインデックスを返します。voidor(BitSet set)ビット・セットとビット・セット引数の論理和を取ります。intpreviousClearBit(int fromIndex)指定された開始インデックス時、またはそのインデックス前に生じる、falseに設定されたもっとも近いビットのインデックスを返します。intpreviousSetBit(int fromIndex)指定された開始インデックス時、またはそのインデックス前に生じる、trueに設定されたもっとも近いビットのインデックスを返します。voidset(int bitIndex)指定されたインデックスのビットをtrueに設定します。voidset(int bitIndex, boolean value)指定されたインデックスのビットを指定された値に設定します。voidset(int fromIndex, int toIndex)指定されたfromIndex(これを含む)から指定されたtoIndex(これを含まない)までのビットをtrueに設定します。voidset(int fromIndex, int toIndex, boolean value)指定されたfromIndex(これを含む)から指定されたtoIndex(これを含まない)までのビットを指定された値に設定します。intsize()このBitSetでビット値を表すために実際に使用しているビットの数を返します。IntStreamstream()このBitSetにビットが設定状態で保持されているインデックスのストリームを返します。byte[]toByteArray()このビット・セット内のすべてのビットを含む新しいバイト配列を返します。long[]toLongArray()このビット・セット内のすべてのビットを含む新しいlong配列を返します。StringtoString()ビット・セットの文字列表現を返します。static BitSetvalueOf(byte[] bytes)指定されたバイト配列内のすべてのビットを含む新しいビット・セットを返します。static BitSetvalueOf(long[] longs)指定されたlong配列内のすべてのビットを含む新しいビット・セットを返します。static BitSetvalueOf(ByteBuffer bb)指定されたbyteバッファ内の、その位置から上限までのすべてのビットを含む新しいビット・セットを返します。static BitSetvalueOf(LongBuffer lb)指定されたlongバッファ内の、その位置から上限までのすべてのビットを含む新しいビット・セットを返します。voidxor(BitSet set)ビット・セットとビット・セット引数の排他的論理和を取ります。
-
-
-
コンストラクタの詳細
-
BitSet
public BitSet()
新規ビット・セットを作成します。 ビットの初期値はすべてfalseです。
-
BitSet
public BitSet(int nbits)
0-nbits-1の範囲のインデックスを持つビットを明示的に表すために十分な初期サイズを持つビット・セットを作成します。 ビットの初期値はすべてfalseです。- パラメータ:
nbits- ビット・セットの初期サイズ- 例外:
NegativeArraySizeException- 指定された初期サイズが負の場合
-
-
メソッドの詳細
-
valueOf
public static BitSet valueOf(long[] longs)
指定されたlong配列内のすべてのビットを含む新しいビット・セットを返します。より正確には、
すべてのn < 64 * longs.lengthに対してBitSet.valueOf(longs).get(n)==((longs[n/64] & (1L<<(n%64)))!= 0)となります。このメソッドは、
BitSet.valueOf(LongBuffer.wrap(longs))と同等です。- パラメータ:
longs- 新規ビット・セットの初期ビットとして使用されるビット・シーケンスのリトル・エンディアン表現を含むlong配列- 戻り値:
- long配列内のすべてのビットを含む
BitSet - 導入されたバージョン:
- 1.7
-
valueOf
public static BitSet valueOf(LongBuffer lb)
指定されたlongバッファ内の、その位置から上限までのすべてのビットを含む新しいビット・セットを返します。より正確には、
すべてのn < 64 * lb.remaining()に対してBitSet.valueOf(lb).get(n)==((lb.get(lb.position()+n/64)& (1L<<(n%64)))!= 0)となります。longバッファはこのメソッドによって変更されず、このバッファへの参照はビット・セットによって保存されません。
- パラメータ:
lb- 新規ビット・セットの初期ビットとして使用される、その位置から上限までのビット・シーケンスのリトル・エンディアン表現を含むlongバッファ- 戻り値:
- 指定された範囲のバッファ内のすべてのビットを含む
BitSet - 導入されたバージョン:
- 1.7
-
valueOf
public static BitSet valueOf(byte[] bytes)
指定されたバイト配列内のすべてのビットを含む新しいビット・セットを返します。より正確には、
すべてのn < 8 * bytes.lengthに対してBitSet.valueOf(bytes).get(n)==((bytes[n/8] & (1<<(n%8)))!= 0)となります。このメソッドは、
BitSet.valueOf(ByteBuffer.wrap(bytes))と同等です。- パラメータ:
bytes- 新規ビット・セットの初期ビットとして使用されるビット・シーケンスのリトル・エンディアン表現を含むバイト配列- 戻り値:
- バイト配列内のすべてのビットを含む
BitSet - 導入されたバージョン:
- 1.7
-
valueOf
public static BitSet valueOf(ByteBuffer bb)
指定されたbyteバッファ内の、その位置から上限までのすべてのビットを含む新しいビット・セットを返します。より正確には、
すべてのn < 8 * bb.remaining()に対してBitSet.valueOf(bb).get(n)==((bb.get(bb.position()+n/8)& (1<<(n%8)))!= 0)となります。byteバッファはこのメソッドによって変更されず、このバッファへの参照はビット・セットによって保存されません。
- パラメータ:
bb- 新規ビット・セットの初期ビットとして使用される、その位置から上限までのビット・シーケンスのリトル・エンディアン表現を含むbyteバッファ- 戻り値:
- 指定された範囲のバッファ内のすべてのビットを含む
BitSet - 導入されたバージョン:
- 1.7
-
toByteArray
public byte[] toByteArray()
このビット・セット内のすべてのビットを含む新しいバイト配列を返します。より正確には、
byte[] bytes = s.toByteArray();の場合
すべてのn < 8 * bytes.lengthに対してbytes.length ==(s.length()+7)/8およびs.get(n)==((bytes[n/8] & (1<<(n%8)))!= 0)となります。- 戻り値:
- このビット・セットのすべてのビットのリトル・エンディアン表現を含むバイト配列
- 導入されたバージョン:
- 1.7
-
toLongArray
public long[] toLongArray()
このビット・セット内のすべてのビットを含む新しいlong配列を返します。より正確には、
long[] longs = s.toLongArray();の場合
すべてのn < 64 * longs.lengthに対してlongs.length ==(s.length()+63)/64およびs.get(n)==((longs[n/64] & (1L<<(n%64)))!= 0)となります。- 戻り値:
- このビット・セットのすべてのビットのリトル・エンディアン表現を含むlong配列
- 導入されたバージョン:
- 1.7
-
flip
public void flip(int bitIndex)
現在値の補数に指定されたインデックスのビットを設定します。- パラメータ:
bitIndex- 反転するビットのインデックス- 例外:
IndexOutOfBoundsException- 指定されたインデックスが負の値の場合- 導入されたバージョン:
- 1.4
-
flip
public void flip(int fromIndex, int toIndex)指定されたfromIndex(これを含む)から指定されたtoIndex(これを含まない)までの各ビットをその現在値の補数に設定します。- パラメータ:
fromIndex- 反転する最初のビットのインデックスtoIndex- 反転する最後のビットの後ろのインデックス- 例外:
IndexOutOfBoundsException-fromIndexが負の値の場合、toIndexが負の値の場合、あるいはfromIndexがtoIndexよりも大きい場合- 導入されたバージョン:
- 1.4
-
set
public void set(int bitIndex)
指定されたインデックスのビットをtrueに設定します。- パラメータ:
bitIndex- ビット・インデックス- 例外:
IndexOutOfBoundsException- 指定されたインデックスが負の値の場合- 導入されたバージョン:
- 1.0
-
set
public void set(int bitIndex, boolean value)指定されたインデックスのビットを指定された値に設定します。- パラメータ:
bitIndex- ビット・インデックスvalue- 設定されるboolean値- 例外:
IndexOutOfBoundsException- 指定されたインデックスが負の値の場合- 導入されたバージョン:
- 1.4
-
set
public void set(int fromIndex, int toIndex)指定されたfromIndex(これを含む)から指定されたtoIndex(これを含まない)までのビットをtrueに設定します。- パラメータ:
fromIndex- 設定する最初のビットのインデックスtoIndex- 設定される最後のビットの後ろのインデックス- 例外:
IndexOutOfBoundsException-fromIndexが負の値の場合、toIndexが負の値の場合、あるいはfromIndexがtoIndexよりも大きい場合- 導入されたバージョン:
- 1.4
-
set
public void set(int fromIndex, int toIndex, boolean value)指定されたfromIndex(これを含む)から指定されたtoIndex(これを含まない)までのビットを指定された値に設定します。- パラメータ:
fromIndex- 設定する最初のビットのインデックスtoIndex- 設定される最後のビットの後ろのインデックスvalue- 選択されたビットを設定する値- 例外:
IndexOutOfBoundsException-fromIndexが負の値の場合、toIndexが負の値の場合、あるいはfromIndexがtoIndexよりも大きい場合- 導入されたバージョン:
- 1.4
-
clear
public void clear(int bitIndex)
インデックスで指定されたビットをfalseに設定します。- パラメータ:
bitIndex- クリアするビットのインデックス- 例外:
IndexOutOfBoundsException- 指定されたインデックスが負の値の場合- 導入されたバージョン:
- 1.0
-
clear
public void clear(int fromIndex, int toIndex)指定されたfromIndex(これを含む)から指定されたtoIndex(これを含まない)までのビットをfalseに設定します。- パラメータ:
fromIndex- クリアする最初のビットのインデックスtoIndex- クリアされる最後のビットの後ろのインデックス- 例外:
IndexOutOfBoundsException-fromIndexが負の値の場合、toIndexが負の値の場合、あるいはfromIndexがtoIndexよりも大きい場合- 導入されたバージョン:
- 1.4
-
clear
public void clear()
このBitSet内のビットをすべてfalseに設定します。- 導入されたバージョン:
- 1.4
-
get
public boolean get(int bitIndex)
指定されたインデックスを持つビットの値を返します。 このBitSetにbitIndexのインデックスを持つビットが設定されている場合、値はtrueです。そうでない場合はfalseです。- パラメータ:
bitIndex- ビット・インデックス- 戻り値:
- 指定されたインデックスを持つビットの値
- 例外:
IndexOutOfBoundsException- 指定されたインデックスが負の値の場合
-
get
public BitSet get(int fromIndex, int toIndex)
このBitSetからのビットで構成される新規BitSetをfromIndex(これを含む)からtoIndex(これを含まない)まで返します。- パラメータ:
fromIndex- 組み込む最初のビットのインデックスtoIndex- 組み込む最後のビットの後ろのインデックス- 戻り値:
- この
BitSetの範囲からの新規BitSet - 例外:
IndexOutOfBoundsException-fromIndexが負の値の場合、toIndexが負の値の場合、あるいはfromIndexがtoIndexよりも大きい場合- 導入されたバージョン:
- 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 if (i == Integer.MAX_VALUE) { break; // or (i+1) would overflow } }- パラメータ:
fromIndex- チェックを開始する位置のインデックス(これを含む)- 戻り値:
- 次のセット・ビットのインデックス。そのようなビットが存在しない場合は
-1 - 例外:
IndexOutOfBoundsException- 指定されたインデックスが負の値の場合- 導入されたバージョン:
- 1.4
-
nextClearBit
public int nextClearBit(int fromIndex)
指定された開始インデックス時、またはそのインデックス後に生じる、falseに設定された最初のビットのインデックスを返します。- パラメータ:
fromIndex- チェックを開始する位置のインデックス(これを含む)- 戻り値:
- 次のクリア・ビットのインデックス
- 例外:
IndexOutOfBoundsException- 指定されたインデックスが負の値の場合- 導入されたバージョン:
- 1.4
-
previousSetBit
public int previousSetBit(int fromIndex)
指定された開始インデックス時、またはそのインデックス前に生じる、trueに設定されたもっとも近いビットのインデックスを返します。 そのようなビットが存在しない場合、または開始インデックスとして-1が指定された場合は、-1が返されます。BitSet内のtrueビットに対して反復処理を実行する場合は、次のループを使用します。for (int i = bs.length(); (i = bs.previousSetBit(i-1)) >= 0; ) { // operate on index i here }- パラメータ:
fromIndex- チェックを開始する位置のインデックス(これを含む)- 戻り値:
- 前のセット・ビットのインデックス。そのようなビットが存在しない場合は
-1 - 例外:
IndexOutOfBoundsException- 指定されたインデックスが次より小さい場合-1- 導入されたバージョン:
- 1.7
-
previousClearBit
public int previousClearBit(int fromIndex)
指定された開始インデックス時、またはそのインデックス前に生じる、falseに設定されたもっとも近いビットのインデックスを返します。 そのようなビットが存在しない場合、または開始インデックスとして-1が指定された場合は、-1が返されます。- パラメータ:
fromIndex- チェックを開始する位置のインデックス(これを含む)- 戻り値:
- 前のクリア・ビットのインデックス。そのようなビットが存在しない場合は
-1 - 例外:
IndexOutOfBoundsException- 指定されたインデックスが次より小さい場合-1- 導入されたバージョン:
- 1.7
-
length
public int length()
このBitSetの「論理サイズ」、つまりBitSetの最上位セット・ビットのインデックスに1を加えた値を返します。BitSetにセット・ビットがない場合はゼロを返します。- 戻り値:
BitSetの論理サイズ- 導入されたバージョン:
- 1.2
-
isEmpty
public boolean isEmpty()
このBitSetにtrueに設定されたビットが含まれていない場合は、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に設定されたビットの数を返します。- 戻り値:
- この
BitSetで、trueに設定されたビットの数 - 導入されたバージョン:
- 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になります。- このビットの初期値が
trueで、引数の対応するビットの値がfalseである。 - このビットの初期値が
falseで、引数の対応するビットの値がtrueである。
- パラメータ:
set- ビット・セット
- このビットの初期値が
-
andNot
public void andNot(BitSet set)
対応するビットが、指定されたBitSet内に設定されているこのBitSet内のすべてのビットをクリアします。- パラメータ:
set- このBitSetをマスクするためのBitSet- 導入されたバージョン:
- 1.2
-
hashCode
public int hashCode()
このビット・セットのハッシュ・コード値を返します。 ハッシュ・コードは、このBitSet内に設定されているビットによってのみ決まります。ハッシュ・コードは、次の計算の結果として定義されます。
ビットの設定が変わると、ハッシュ・コードは変更されます。public int hashCode() { long h = 1234; long[] words = toLongArray(); for (int i = words.length; --i >= 0; ) h ^= words[i] * (i + 1); return (int)((h >> 32) ^ h); }- オーバーライド:
hashCode、クラス:Object- 戻り値:
- このビット・セットのハッシュ・コード値
- 関連項目:
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
-
size
public int size()
このBitSetでビット値を表すために実際に使用しているビットの数を返します。 このセットで最大の要素は「サイズ」で、これが第1の要素です。- 戻り値:
- ビット・セットに現在あるビットの数
-
equals
public boolean equals(Object obj)
このオブジェクトと指定されたオブジェクトを比較します。 引数がnullではなく、このビット・セットとまったく同じtrueのビットのセットを持つBitsetオブジェクトである場合にかぎり、結果はtrueです。 つまり、負でないint型のインデックスkに対して、((BitSet)obj).get(k) == this.get(k)
が成り立たなければいけません。 2つのビット・セットの現在のサイズは比較されません。
-
clone
public Object clone()
このBitSetをクローニングして、それと同等の新しいBitSetを作成します。 このビット・セットの複製は、このビット・セットとまったく同じtrueのビットを持ちます。
-
toString
public String toString()
ビット・セットの文字列表現を返します。 このBitSetでビットが設定状態で保持されているインデックスごとに、そのインデックスの10進表現が結果に含まれます。 こうしたインデックスは、最下位から最上位の順序で並べられ、「, 」(カンマとスペース)で区切って中カッコで囲まれます。このため、整数セットの通常の数値表記になります。例:
BitSet drPepper = new BitSet();
これで、drPepper.toString()は「{}」を返します。drPepper.set(2);
これで、drPepper.toString()は「{2}」を返します。drPepper.set(4); drPepper.set(10);
これで、drPepper.toString()は「{2, 4, 10}」を返します。
-
stream
public IntStream stream()
このBitSetにビットが設定状態で保持されているインデックスのストリームを返します。 インデックスは、最下位から最上位の順序で返されます。 そのストリームのサイズは、設定状態にあるビットの数であり、cardinality()メソッドで返される値に等しくなります。ストリームは、ターミナル・ストリーム操作が開始されるときにこのビット・セットにバインドされます((具体的には、ストリームのスプライテータはlate-binding))。 その操作中にビット・セットが変更された場合、結果は未定義です。
- 戻り値:
- 設定されたインデックスを表す整数のストリーム
- 導入されたバージョン:
- 1.8
-
-