- すべての実装されたインタフェース:
Serializable
,Cloneable
boolean
値を持ちます。 BitSet
のビットには、負でない整数のインデックスが付けられます。 インデックスが付けられた個別のビットは、試験したり、設定したり、クリアしたりできます。 また、論理積、包含的論理和、および排他的論理和の演算を行うと、あるBitSet
を使って別のBitSet
の内容を変更できます。
デフォルトでは、セットのすべてのビットは初期値としてfalse
を持ちます。
ビット・セットの、現在のサイズは、そのビット・セットによって現在使用されているスペースのビット数です。 このサイズはビット・セットの実装と関連するので、サイズは実装によって変わる場合があります。 ビット・セットの長さはビット・セットの論理的な長さと関連し、実装とは関係なく定義されます。
特に明記されていないかぎり、nullパラメータをBitSet
のメソッドに渡すと、NullPointerException
がスローされます。
BitSet
が、外部の同期化を行わずにマルチ・スレッドを使用するのは安全ではありません。
- 導入されたバージョン:
- 1.0
- 関連項目:
-
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明void
ターゲット・ビット・セットと引数ビット・セットの論理積を取ります。void
対応するビットが、指定されたBitSet
内に設定されているこのBitSet
内のすべてのビットをクリアします。int
このBitSet
で、true
に設定されたビットの数を返します。void
clear()
このBitSet内のビットをすべてfalse
に設定します。void
clear
(int bitIndex) インデックスで指定されたビットをfalse
に設定します。void
clear
(int fromIndex, int toIndex) 指定されたfromIndex
(これを含む)から指定されたtoIndex
(これを含まない)までのビットをfalse
に設定します。clone()
このBitSet
をクローニングして、それと同等の新しいBitSet
を作成します。boolean
このビット・セットを指定されたオブジェクトと比較します。void
flip
(int bitIndex) 現在値の補数に指定されたインデックスのビットを設定します。void
flip
(int fromIndex, int toIndex) 指定されたfromIndex
(これを含む)から指定されたtoIndex
(これを含まない)までの各ビットをその現在値の補数に設定します。boolean
get
(int bitIndex) 指定されたインデックスを持つビットの値を返します。get
(int fromIndex, int toIndex) このBitSet
からのビットで構成される新規BitSet
をfromIndex
(これを含む)からtoIndex
(これを含まない)まで返します。int
hashCode()
このビット・セットのハッシュ・コード値を返します。boolean
intersects
(BitSet set) このBitSet
でもtrue
に設定された、true
設定のビットが、指定されたBitSet
にある場合、trueを返します。boolean
isEmpty()
このBitSet
にtrue
に設定されたビットが含まれていない場合は、trueを返します。int
length()
このBitSet
の「論理サイズ」、つまりBitSet
の最上位セット・ビットのインデックスに1を加えた値を返します。int
nextClearBit
(int fromIndex) 指定された開始インデックス時、またはそのインデックス後に生じる、false
に設定された最初のビットのインデックスを返します。int
nextSetBit
(int fromIndex) 指定された開始インデックス時、またはそのインデックス後に生じる、true
に設定された最初のビットのインデックスを返します。void
ビット・セットとビット・セット引数の論理和を取ります。int
previousClearBit
(int fromIndex) 指定された開始インデックス時、またはそのインデックス前に生じる、false
に設定されたもっとも近いビットのインデックスを返します。int
previousSetBit
(int fromIndex) 指定された開始インデックス時、またはそのインデックス前に生じる、true
に設定されたもっとも近いビットのインデックスを返します。void
set
(int bitIndex) 指定されたインデックスのビットをtrue
に設定します。void
set
(int bitIndex, boolean value) 指定されたインデックスのビットを指定された値に設定します。void
set
(int fromIndex, int toIndex) 指定されたfromIndex
(これを含む)から指定されたtoIndex
(これを含まない)までのビットをtrue
に設定します。void
set
(int fromIndex, int toIndex, boolean value) 指定されたfromIndex
(これを含む)から指定されたtoIndex
(これを含まない)までのビットを指定された値に設定します。int
size()
このBitSet
でビット値を表すために実際に使用しているビットの数を返します。stream()
このBitSet
にビットが設定状態で保持されているインデックスのストリームを返します。byte[]
このビット・セット内のすべてのビットを含む新しいバイト配列を返します。long[]
このビット・セット内のすべてのビットを含む新しいlong配列を返します。toString()
ビット・セットの文字列表現を返します。static BitSet
valueOf
(byte[] bytes) 指定されたバイト配列内のすべてのビットを含む新しいビット・セットを返します。static BitSet
valueOf
(long[] longs) 指定されたlong配列内のすべてのビットを含む新しいビット・セットを返します。static BitSet
valueOf
(ByteBuffer bb) 指定されたbyteバッファ内の、その位置から上限までのすべてのビットを含む新しいビット・セットを返します。static BitSet
valueOf
(LongBuffer lb) 指定されたlongバッファ内の、その位置から上限までのすべてのビットを含む新しいビット・セットを返します。void
ビット・セットとビット・セット引数の排他的論理和を取ります。
-
コンストラクタの詳細
-
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); }
-
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
-
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
-