public class BitSet extends Object implements Cloneable, Serializable
boolean 値を持ちます。BitSet のビットには、負でない整数のインデックスが付けられます。インデックスが付けられた個別のビットは、試験したり、設定したり、クリアしたりできます。また、論理積、包含的論理和、および排他的論理和の演算を行うと、ある BitSet を使って別の BitSet の内容を変更できます。
デフォルトでは、セットのすべてのビットは初期値として false を持ちます。
ビットセットの、現在のサイズは、そのビットセットによって現在使用されているスペースのビット数です。このサイズはビットセットの実装と関連するので、サイズは実装によって変わる場合があります。ビットセットの長さはビットセットの論理的な長さと関連し、実装とは関係なく定義されます。
特に明記されていないかぎり、null パラメータを BitSet のメソッドに渡すと、NullPointerException がスローされます。
BitSet が、外部の同期化を行わずにマルチスレッドを使用するのは安全ではありません。
| コンストラクタと説明 |
|---|
BitSet()
新規ビットセットを作成します。
|
BitSet(int nbits)
0 - nbits-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 (これを含む) から指定された toIndex (これを含まない) までのビットを false に設定します。 |
Object |
clone()
この
BitSet をクローニングして、それと同等の新しい BitSet を作成します。 |
boolean |
equals(Object obj)
このオブジェクトと指定されたオブジェクトを比較します。
|
void |
flip(int bitIndex)
現在値の補数に指定されたインデックスのビットを設定します。
|
void |
flip(int fromIndex, int toIndex)
指定された
fromIndex (これを含む) から指定された toIndex (これを含まない) までの各ビットをその現在値の補数に設定します。 |
boolean |
get(int bitIndex)
指定されたインデックスを持つビットの値を返します。
|
BitSet |
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 |
or(BitSet set)
ビットセットとビットセット引数の論理和を取ります。
|
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 でビット値を表すために実際に使用しているビットの数を返します。 |
byte[] |
toByteArray()
このビットセット内のすべてのビットを含む新しいバイト配列を返します。
|
long[] |
toLongArray()
このビットセット内のすべてのビットを含む新しい long 配列を返します。
|
String |
toString()
ビットセットの文字列表現を返します。
|
static BitSet |
valueOf(byte[] bytes)
指定されたバイト配列内のすべてのビットを含む新しいビットセットを返します。
|
static BitSet |
valueOf(ByteBuffer bb)
指定された byte バッファー内の、その位置から上限までのすべてのビットを含む新しいビットセットを返します。
|
static BitSet |
valueOf(long[] longs)
指定された long 配列内のすべてのビットを含む新しいビットセットを返します。
|
static BitSet |
valueOf(LongBuffer lb)
指定された long バッファー内の、その位置から上限までのすべてのビットを含む新しいビットセットを返します。
|
void |
xor(BitSet set)
ビットセットとビットセット引数の排他的論理和を取ります。
|
public BitSet()
false です。public BitSet(int nbits)
0 - nbits-1 の範囲のインデックスを持つビットを明示的に表すために十分な初期サイズを持つビットセットを作成します。ビットの初期値はすべて false です。nbits - ビットセットの初期サイズNegativeArraySizeException - 指定された初期サイズが負の場合public static BitSet valueOf(long[] longs)
より正確には、
すべての n < 64 * longs.length に対してBitSet.valueOf(longs).get(n) == ((longs[n/64] & (1L<<(n%64))) != 0) となります。
このメソッドは、BitSet.valueOf(LongBuffer.wrap(longs)) と同等です。
longs - 新規ビットセットの初期ビットとして使用されるビットシーケンスのリトルエンディアン表現を含む long 配列public static BitSet valueOf(LongBuffer lb)
より正確には、
すべての n < 64 * lb.remaining() に対してBitSet.valueOf(lb).get(n) == ((lb.get(lb.position()+n/64) & (1L<<(n%64))) != 0) となります。
long バッファーはこのメソッドによって変更されず、このバッファーへの参照はビットセットによって保存されません。
lb - 新規ビットセットの初期ビットとして使用される、その位置から上限までのビットシーケンスのリトルエンディアン表現を含む long バッファー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 - 新規ビットセットの初期ビットとして使用されるビットシーケンスのリトルエンディアン表現を含むバイト配列public static BitSet valueOf(ByteBuffer bb)
より正確には、
すべての n < 8 * bb.remaining() に対してBitSet.valueOf(bb).get(n) == ((bb.get(bb.position()+n/8) & (1<<(n%8))) != 0) となります。
byte バッファーはこのメソッドによって変更されず、このバッファーへの参照はビットセットによって保存されません。
bb - 新規ビットセットの初期ビットとして使用される、その位置から上限までのビットシーケンスのリトルエンディアン表現を含む byte バッファー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) となります。
public long[] toLongArray()
より正確には、long[] longs = s.toLongArray(); の場合
すべての n < 64 * longs.length に対してlongs.length == (s.length()+63)/64 およびs.get(n) == ((longs[n/64] & (1L<<(n%64))) != 0) となります。
public void flip(int bitIndex)
bitIndex - 反転するビットのインデックスIndexOutOfBoundsException - 指定されたインデックスが負の値の場合public void flip(int fromIndex,
int toIndex)
fromIndex (これを含む) から指定された toIndex (これを含まない) までの各ビットをその現在値の補数に設定します。fromIndex - 反転する最初のビットのインデックスtoIndex - 反転する最後のビットの後ろのインデックスIndexOutOfBoundsException - fromIndex が負の値の場合、toIndex が負の値の場合、あるいは fromIndex が toIndex よりも大きい場合public void set(int bitIndex)
true に設定します。bitIndex - ビットインデックスIndexOutOfBoundsException - 指定されたインデックスが負の値の場合public void set(int bitIndex,
boolean value)
bitIndex - ビットインデックスvalue - 設定される boolean 値IndexOutOfBoundsException - 指定されたインデックスが負の値の場合public void set(int fromIndex,
int toIndex)
fromIndex (これを含む) から指定された toIndex (これを含まない) までのビットを true に設定します。fromIndex - 設定する最初のビットのインデックスtoIndex - 設定される最後のビットの後ろのインデックスIndexOutOfBoundsException - fromIndex が負の値の場合、toIndex が負の値の場合、あるいは fromIndex が toIndex よりも大きい場合public void set(int fromIndex,
int toIndex,
boolean value)
fromIndex (これを含む) から指定された toIndex (これを含まない) までのビットを指定された値に設定します。fromIndex - 設定する最初のビットのインデックスtoIndex - 設定される最後のビットの後ろのインデックスvalue - 選択されたビットを設定する値IndexOutOfBoundsException - fromIndex が負の値の場合、toIndex が負の値の場合、あるいは fromIndex が toIndex よりも大きい場合public void clear(int bitIndex)
false に設定します。bitIndex - クリアするビットのインデックスIndexOutOfBoundsException - 指定されたインデックスが負の値の場合public void clear(int fromIndex,
int toIndex)
fromIndex (これを含む) から指定された toIndex (これを含まない) までのビットを false に設定します。fromIndex - クリアする最初のビットのインデックスtoIndex - クリアされる最後のビットの後ろのインデックスIndexOutOfBoundsException - fromIndex が負の値の場合、toIndex が負の値の場合、あるいは fromIndex が toIndex よりも大きい場合public void clear()
false に設定します。public boolean get(int bitIndex)
BitSet に bitIndex のインデックスを持つビットが設定されている場合、値は true です。そうでない場合は false です。bitIndex - ビットインデックスIndexOutOfBoundsException - 指定されたインデックスが負の値の場合public BitSet get(int fromIndex, int toIndex)
BitSet からのビットで構成される新規 BitSet を fromIndex (これを含む) から toIndex (これを含まない) まで返します。fromIndex - 組み込む最初のビットのインデックスtoIndex - 組み込む最後のビットの後ろのインデックスBitSet の範囲からの新規 BitSetIndexOutOfBoundsException - fromIndex が負の値の場合、toIndex が負の値の場合、あるいは fromIndex が toIndex よりも大きい場合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 - チェックを開始する位置のインデックス (これを含む)-1IndexOutOfBoundsException - 指定されたインデックスが負の値の場合public int nextClearBit(int fromIndex)
false に設定された最初のビットのインデックスを返します。fromIndex - チェックを開始する位置のインデックス (これを含む)IndexOutOfBoundsException - 指定されたインデックスが負の値の場合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 - チェックを開始する位置のインデックス (これを含む)-1IndexOutOfBoundsException - 指定されたインデックスが次より小さい場合-1public int previousClearBit(int fromIndex)
false に設定されたもっとも近いビットのインデックスを返します。そのようなビットが存在しない場合、または開始インデックスとして -1 が指定された場合は、-1 が返されます。fromIndex - チェックを開始する位置のインデックス (これを含む)-1IndexOutOfBoundsException - 指定されたインデックスが次より小さい場合-1public int length()
BitSet の「論理サイズ」、つまり BitSet の最上位セットビットのインデックスに 1 を加えた値を返します。BitSet にセットビットがない場合はゼロを返します。BitSet の論理サイズpublic boolean isEmpty()
BitSet に true に設定されたビットが含まれていない場合は、true を返します。BitSet が空かどうかを示す boolean 型public boolean intersects(BitSet set)
BitSet でも true に設定された、true 設定のビットが、指定された BitSet にある場合、true を返します。set - 交差する BitSetBitSet が指定された BitSet と交差するかどうかを示す boolean 型public int cardinality()
BitSet で、true に設定されたビットの数を返します。BitSet で、true に設定されたビットの数public void and(BitSet set)
true で、ビットセット引数の対応するビットの初期値も true の場合にかぎり、このビットセットが変更され、その各ビットの値が true になります。set - ビットセットpublic void or(BitSet set)
true であったか、ビットセット引数の対応するビットの値が true である場合にかぎり、このビットセットが変更され、そのビットの値が true になります。set - ビットセットpublic void xor(BitSet set)
true になります。
true で、引数の対応するビットの値が false である。
false で、引数の対応するビットの値が true である。
set - ビットセットpublic void andNot(BitSet set)
BitSet 内に設定されているこの BitSet 内のすべてのビットをクリアします。set - この BitSet をマスクするための BitSetpublic 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、クラス: ObjectObject.equals(java.lang.Object), System.identityHashCode(java.lang.Object)public int size()
BitSet でビット値を表すために実際に使用しているビットの数を返します。このセットで最大の要素は「サイズ」で、これが第一要素です。public boolean equals(Object obj)
null ではなく、このビットセットとまったく同じ true のビットのセットを持つ Bitset オブジェクトである場合にかぎり、結果は true です。つまり、負でない int 型のインデックス k に対して、
((BitSet)obj).get(k) == this.get(k)が成り立たなければいけません。2 つのビットセットの現在のサイズは比較されません。
public Object clone()
BitSet をクローニングして、それと同等の新しい BitSet を作成します。このビットセットの複製は、このビットセットとまったく同じ true のビットを持ちます。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}」を返します。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.