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でビット値を表すために実際に使用しているビットの数を返します。 |
IntStream |
stream()
この
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配列BitSetpublic 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バッファBitSetpublic 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 - 新規ビット・セットの初期ビットとして使用されるビット・シーケンスのリトル・エンディアン表現を含むバイト配列BitSetpublic 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バッファBitSetpublic 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でビット値を表すために実際に使用しているビットの数を返します。このセットで最大の要素は「サイズ」で、これが第1の要素です。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}」を返します。public IntStream stream()
BitSetにビットが設定状態で保持されているインデックスのストリームを返します。インデックスは、最下位から最上位の順序で返されます。そのストリームのサイズは、設定状態にあるビットの数であり、cardinality()メソッドで返される値に等しくなります。
ストリーム終端操作の実行中は、このビット・セットを一定に保つ必要があります。そうでないと、端末のストリーム操作の結果が不定になります。
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.