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
の範囲からの新規 BitSet
IndexOutOfBoundsException
- 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
- チェックを開始する位置のインデックス (これを含む)-1
IndexOutOfBoundsException
- 指定されたインデックスが負の値の場合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
- チェックを開始する位置のインデックス (これを含む)-1
IndexOutOfBoundsException
- 指定されたインデックスが次より小さい場合-1
public int previousClearBit(int fromIndex)
false
に設定されたもっとも近いビットのインデックスを返します。そのようなビットが存在しない場合、または開始インデックスとして -1
が指定された場合は、-1
が返されます。fromIndex
- チェックを開始する位置のインデックス (これを含む)-1
IndexOutOfBoundsException
- 指定されたインデックスが次より小さい場合-1
public 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
- 交差する BitSet
BitSet
が指定された 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
をマスクするための BitSet
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)
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.