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配列BitSet
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バッファBitSet
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
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バッファBitSet
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
でビット値を表すために実際に使用しているビットの数を返します。このセットで最大の要素は「サイズ」で、これが第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.