W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
java.lang.Object
|---java.util.BitSet
public class BitSet
extends Object
implements Cloneable, Serializable
這個類實現(xiàn)了一個根據(jù)需要增長的位向量。 位集的每個組件都有一個布爾值。 BitSet 的位由非負整數(shù)索引。 可以檢查、設(shè)置或清除各個索引位。 一個 BitSet 可用于通過邏輯 AND、邏輯異或和邏輯異或操作來修改另一個 BitSet 的內(nèi)容。
默認情況下,集合中的所有位最初都具有值 false。
每個位集都有一個當前大小,即該位集當前使用的空間位數(shù)。 請注意,大小與位集的實現(xiàn)有關(guān),因此它可能會隨著實現(xiàn)而改變。 位集的長度與位集的邏輯長度相關(guān),并且獨立于實現(xiàn)來定義。
除非另有說明,否則將 null 參數(shù)傳遞給 BitSet 中的任何方法都將導致 NullPointerException。
如果沒有外部同步,BitSet 對于多線程使用是不安全的。
構(gòu)造函數(shù) | 描述 |
---|---|
BitSet() | 創(chuàng)建一個新的位集。 |
BitSet(int nbits) | 創(chuàng)建一個位集,其初始大小足夠大,可以顯式表示索引范圍為 0 到 nbits-1 的位。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
void | and(BitSet set) | 執(zhí)行此目標位集與參數(shù)位集的邏輯與。 |
void | andNot(BitSet set) | 清除此 BitSet 中在指定 BitSet 中設(shè)置了相應位的所有位。 |
int | cardinality() | 返回此 BitSet 中設(shè)置為 true 的位數(shù)。 |
void | clear() | 將此 BitSet 中的所有位設(shè)置為 false。 |
void | clear(int bitIndex) | 將索引指定的位設(shè)置為 false。 |
void | clear(int fromIndex, int toIndex) | 將從指定的 fromIndex(包括)到指定的 toIndex(不包括)的位設(shè)置為 false。 |
Object | clone() | 克隆此 BitSet 會生成一個與其相同的新 BitSet。 |
boolean | equals(Object obj) | 將此對象與指定對象進行比較。 |
void | flip(int bitIndex) | 將指定索引處的位設(shè)置為其當前值的補碼。 |
void | flip(int fromIndex, int toIndex) | 將從指定的 fromIndex(包括)到指定的 toIndex(不包括)的每個位設(shè)置為其當前值的補碼。 |
boolean | get(int bitIndex) | 返回具有指定索引的位的值。 |
BitSet | get(int fromIndex, int toIndex) | 返回一個新的 BitSet,該 BitSet 由該 BitSet 中從 fromIndex(包括)到 toIndex(不包括)的位組成。 |
int | hashCode() | 返回此位集的哈希碼值。 |
boolean | intersects(BitSet set) | 如果指定的 BitSet 有任何位設(shè)置為 true,并且在此 BitSet 中也設(shè)置為 true,則返回 true。 |
boolean | isEmpty() | 如果此 BitSet 不包含設(shè)置為 true 的位,則返回 true。 |
int | length() | 返回此 BitSet 的“邏輯大小”:BitSet 中最高設(shè)置位的索引加一。 |
int | nextClearBit(int fromIndex) | 返回在指定起始索引上或之后發(fā)生的設(shè)置為 false 的第一位的索引。 |
int | nextSetBit(int fromIndex) | 返回在指定起始索引上或之后出現(xiàn)的第一個設(shè)置為 true 的索引。 |
void | or(BitSet set) | 使用位集參數(shù)執(zhí)行此位集的邏輯或。 |
int | previousClearBit(int fromIndex) | 返回設(shè)置為 false 的最近位的索引,該位出現(xiàn)在指定的起始索引上或之前。 |
int | previousSetBit(int fromIndex) | 返回設(shè)置為 true 的最近位的索引,該位出現(xiàn)在指定的起始索引上或之前。 |
void | set(int bitIndex) | 將指定索引處的位設(shè)置為真。 |
void | set(int bitIndex, boolean value) | 將指定索引處的位設(shè)置為指定值。 |
void | set(int fromIndex, int toIndex) | 將指定 fromIndex(包括)到指定 toIndex(不包括)的位設(shè)置為 true。 |
void | set(int fromIndex, int toIndex, boolean value) | 將指定的 fromIndex(包括)到指定的 toIndex(不包括)的位設(shè)置為指定的值。 |
int | size() | 返回此 BitSet 實際使用的空間位數(shù),以表示位值。 |
IntStream | stream() | 返回此 BitSet 包含處于設(shè)置狀態(tài)的位的索引流。 |
byte[] | toByteArray() | 返回一個包含此位集中所有位的新字節(jié)數(shù)組。 |
long[] | toLongArray() | 返回一個新的長數(shù)組,其中包含此位集中的所有位。 |
String | toString() | 返回此位集的字符串表示形式。 |
static BitSet | valueOf(byte[] bytes) | 返回包含給定字節(jié)數(shù)組中所有位的新位集。 |
static BitSet | valueOf(long[] longs) | 返回一個包含給定長數(shù)組中所有位的新位集。 |
static BitSet | valueOf(ByteBuffer bb) | 返回一個新的位集,其中包含給定字節(jié)緩沖區(qū)中其位置和限制之間的所有位。 |
static BitSet | valueOf(LongBuffer lb) | 返回一個新的位集,其中包含給定長緩沖區(qū)中其位置和限制之間的所有位。 |
void | xor(BitSet set) | 使用位集參數(shù)執(zhí)行此位集的邏輯異或。 |
從類 java.lang.Object 繼承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
public BitSet()
創(chuàng)建一個新的位集。 所有位最初都是錯誤的。
public BitSet(int nbits)
創(chuàng)建一個位集,其初始大小足夠大,可以顯式表示索引范圍為 0 到 nbits-1 的位。 所有位最初都是錯誤的。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
nbits | 位集的初始大小 |
Throws:
Throw名稱 | Throw描述 |
---|---|
NegativeArraySizeException | 如果指定的初始大小為負 |
public static BitSet valueOf(long[] longs)
返回一個包含給定長數(shù)組中所有位的新位集。
更準確地說,對于所有 n < 64 * longs.length,BitSet.valueOf(longs).get(n) == ((longs[n/64] & (1L<<(n%64))) != 0)。
此方法等效于 BitSet.valueOf(LongBuffer.wrap(longs))。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
longs | 一個長數(shù)組,包含一個位序列的小端表示,用作新位集的初始位 |
返回:
包含長數(shù)組中所有位的 BitSet
public static BitSet valueOf(LongBuffer lb)
返回一個新的位集,其中包含給定長緩沖區(qū)中其位置和限制之間的所有位。
更準確地說,BitSet.valueOf(lb).get(n) == ((lb.get(lb.position()+n/64) & (1L<<(n%64))) != 0) n < 64 * lb.remaining()。
該方法不會修改長緩沖區(qū),并且位集不會保留對緩沖區(qū)的引用。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
lb | 一個長緩沖區(qū),包含其位置和限制之間的位序列的小端表示,用作新位集的初始位 |
返回:
包含指定范圍內(nèi)緩沖區(qū)中所有位的 BitSet
public static BitSet valueOf(byte[] bytes)
返回包含給定字節(jié)數(shù)組中所有位的新位集。
更準確地說,對于所有 n < 8 * bytes.length,BitSet.valueOf(bytes).get(n) == ((bytes[n/8] & (1<<(n%8))) != 0)。
此方法等效于 BitSet.valueOf(ByteBuffer.wrap(bytes))。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
bytes | 一個字節(jié)數(shù)組,包含一個位序列的小端表示,用作新位集的初始位 |
返回:
包含字節(jié)數(shù)組中所有位的 BitSet
public static BitSet valueOf(ByteBuffer bb)
返回一個新的位集,其中包含給定字節(jié)緩沖區(qū)中其位置和限制之間的所有位。
更準確地說,BitSet.valueOf(bb).get(n) == ((bb.get(bb.position()+n/8) & (1<<(n%8))) != 0) n < 8 * bb.remaining()。
此方法不會修改字節(jié)緩沖區(qū),并且位集不會保留對緩沖區(qū)的引用。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
bb | 一個字節(jié)緩沖區(qū),包含其位置和限制之間的位序列的小端表示,用作新位集的初始位 |
返回:
包含指定范圍內(nèi)緩沖區(qū)中所有位的 BitSet
public byte[] toByteArray()
返回一個包含此位集中所有位的新字節(jié)數(shù)組。
更準確地說,如果 byte[] bytes = s.toByteArray(); 然后 bytes.length == (s.length()+7)/8 和 s.get(n) == ((bytes[n/8] & (1<<(n%8))) != 0) 對于所有 n < 8 * bytes.length。
返回:
包含此位集中所有位的小端表示的字節(jié)數(shù)組
public long[] toLongArray()
返回一個新的長數(shù)組,其中包含此位集中的所有位。
更準確地說,如果 long[] longs = s.toLongArray(); 然后 longs.length == (s.length()+63)/64 和 s.get(n) == ((longs[n/64] & (1L<<(n%64))) != 0) 對于所有 n < 64 * longs.length。
返回:
一個長數(shù)組,包含此位集中所有位的小端表示
public void flip(int bitIndex)
將指定索引處的位設(shè)置為其當前值的補碼。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
bitIndex | 要翻轉(zhuǎn)的位的索引 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果指定的索引為負 |
public void flip(int fromIndex, int toIndex)
將從指定的 fromIndex(包括)到指定的 toIndex(不包括)的每個位設(shè)置為其當前值的補碼。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
fromIndex | 要翻轉(zhuǎn)的第一位的索引 |
toIndex | 最后一位翻轉(zhuǎn)后的索引 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果 fromIndex 為負數(shù),或 toIndex 為負數(shù),或 fromIndex 大于 toIndex |
public void set(int bitIndex)
將指定索引處的位設(shè)置為true。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
bitIndex | 位索引 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果指定的索引為負 |
public void set(int bitIndex, boolean value)
將指定索引處的位設(shè)置為指定值。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
bitIndex | 位索引 |
value | 要設(shè)置的布爾值 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果指定的索引為負 |
public void set(int fromIndex, int toIndex)
將指定 fromIndex(包括)到指定 toIndex(不包括)的位設(shè)置為 true。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
fromIndex | 要設(shè)置的第一位的索引 |
toIndex | 要設(shè)置的最后一位之后的索引 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果 fromIndex 為負數(shù),或 toIndex 為負數(shù),或 fromIndex 大于 toIndex |
public void set(int fromIndex, int toIndex, boolean value)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)的位設(shè)置為指定的值。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
fromIndex | 要設(shè)置的第一位的索引 |
toIndex | 要設(shè)置的最后一位之后的索引 |
value | 將所選位設(shè)置為的值 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果 fromIndex 為負數(shù),或 toIndex 為負數(shù),或 fromIndex 大于 toIndex |
public void clear(int bitIndex)
將索引指定的位設(shè)置為 false。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
bitIndex | 要清除的位的索引 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果指定的索引為負 |
public void clear(int fromIndex, int toIndex)
將從指定的 fromIndex(包括)到指定的 toIndex(不包括)的位設(shè)置為 false。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
fromIndex | 要清除的第一位的索引 |
toIndex | 要清除的最后一位之后的索引 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果 fromIndex 為負數(shù),或 toIndex 為負數(shù),或 fromIndex 大于 toIndex |
public void clear()
將此 BitSet 中的所有位設(shè)置為 false。
public boolean get(int bitIndex)
返回具有指定索引的位的值。 如果當前在此 BitSet 中設(shè)置了索引為 bitIndex 的位,則該值為 true; 否則,結(jié)果為false。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
bitIndex | 位索引 |
返回:
具有指定索引的位的值
Throws:
Throw名稱 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果指定的索引為負 |
public BitSet get(int fromIndex, int toIndex)
返回一個新的 BitSet,該 BitSet 由該 BitSet 中從 fromIndex(包括)到 toIndex(不包括)的位組成。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
fromIndex | 要包含的第一位的索引 |
toIndex | 要包含的最后一位之后的索引 |
返回:
此 BitSet 范圍內(nèi)的新 BitSet
Throws:
Throw名稱 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果 fromIndex 為負數(shù),或 toIndex 為負數(shù),或 fromIndex 大于 toIndex |
public int nextSetBit(int fromIndex)
返回在指定起始索引上或之后出現(xiàn)的第一個設(shè)置為 true 的索引。 如果不存在這樣的位,則返回 -1。
要遍歷 BitSet 中的真實位,請使用以下循環(huán):
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
}
}
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
fromIndex | 開始檢查的索引(包括) |
返回:
下一個設(shè)置位的索引,如果沒有這樣的位,則為 -1
Throws:
Throw名稱 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果指定的索引為負 |
public int nextClearBit(int fromIndex)
返回在指定起始索引上或之后發(fā)生的設(shè)置為 false 的第一位的索引。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
fromIndex | 開始檢查的索引(包括) |
返回:
下一個 clear 位的索引
Throws:
Throw名稱 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果指定的索引為負 |
public int previousSetBit(int fromIndex)
返回設(shè)置為 true 的最近位的索引,該位出現(xiàn)在指定的起始索引上或之前。 如果不存在這樣的位,或者如果給出 -1 作為起始索引,則返回 -1。
要遍歷 BitSet 中的真實位,請使用以下循環(huán):
for (int i = bs.length(); (i = bs.previousSetBit(i-1)) >= 0; ) {
// operate on index i here
}
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
fromIndex | 開始檢查的索引(包括) |
返回:
前一個設(shè)置位的索引,如果沒有這樣的位,則為 -1
Throws:
Throw名稱 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果指定的索引小于 -1 |
public int previousClearBit(int fromIndex)
返回設(shè)置為 false 的最近位的索引,該位出現(xiàn)在指定的起始索引上或之前。 如果不存在這樣的位,或者如果給出 -1 作為起始索引,則返回 -1。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
fromIndex | the index to start checking from (inclusive) |
返回:
前一個清除位的索引,如果沒有這樣的位,則為 -1
Throws:
Throw名稱 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果指定的索引小于 -1 |
public int length()
返回此 BitSet 的“邏輯大小”:BitSet 中最高設(shè)置位的索引加一。 如果 BitSet 不包含設(shè)置位,則返回零。
返回:
此 BitSet 的邏輯大小
public boolean isEmpty()
如果此 BitSet 不包含設(shè)置為 true 的位,則返回 true。
返回:
指示此 BitSet 是否為空的布爾值
public boolean intersects(BitSet set)
如果指定的 BitSet 有任何位設(shè)置為 true,并且在此 BitSet 中也設(shè)置為 true,則返回 true。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
set | 與之相交的位集 |
返回:
布爾值,指示此 BitSet 是否與指定的 BitSet 相交
public int cardinality()
返回此 BitSet 中設(shè)置為 true 的位數(shù)。
返回:
此 BitSet 中設(shè)置為 true 的位數(shù)
public void and(BitSet set)
執(zhí)行此目標位集與參數(shù)位集的邏輯與。 修改此位集,以便當且僅當它最初都具有值 true 并且位集參數(shù)中的相應位也具有值 true 時,其中的每個位都具有值 true。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
set | 位設(shè)置 |
public void or(BitSet set)
使用位集參數(shù)執(zhí)行此位集的邏輯或。 修改此位集,以便當且僅當它已經(jīng)具有值 true 或位集參數(shù)中的相應位具有值 true 時,其中的位具有值 true。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
set | 位設(shè)置 |
public void xor(BitSet set)
使用位集參數(shù)執(zhí)行此位集的邏輯異或。 此位集被修改,以便當且僅當以下語句之一成立時,其中的位具有值 true:
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
set | 位設(shè)置 |
public void andNot(BitSet set)
清除此 BitSet 中在指定 BitSet 中設(shè)置了相應位的所有位。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
set | 用來屏蔽此 BitSet 的 BitSet |
public int hashCode()
返回此位集的哈希碼值。 哈希碼僅取決于在此 BitSet 中設(shè)置了哪些位。
哈希碼定義為以下計算的結(jié)果:
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);
}
請注意,如果位集發(fā)生更改,哈希碼也會更改。
覆蓋:
類 Object 中的 hashCode
返回:
此位集的哈希碼值
public int size()
返回此 BitSet 實際使用的空間位數(shù),以表示位值。 集合中的最大元素是大小 - 第一個元素。
返回:
當前在此位集中的位數(shù)
public boolean equals(Object obj)
將此對象與指定對象進行比較。 當且僅當參數(shù)不為 null 并且是具有與該位集完全相同的位集設(shè)置為 true 的 Bitset 對象時,結(jié)果才為 true。 也就是說,對于每個非負 int 索引 k,
((BitSet)obj).get(k) == this.get(k)
一定為true。 不比較兩個位集的當前大小。
覆蓋:
類 Object 中的等于
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
obj | 比較的對象 |
返回:
如果對象相同,則為 true; 否則為false
public Object clone()
克隆此 BitSet 會生成一個與其相同的新 BitSet。 位集的克隆是另一個位集,它具有與該位集完全相同的位設(shè)置為true。
覆蓋:
在類 Object 中克隆
返回:
該位集的克隆
public String toString()
返回此位集的字符串表示形式。 對于此 BitSet 包含處于設(shè)置狀態(tài)的位的每個索引,該索引的十進制表示包含在結(jié)果中。 此類索引按從低到高的順序列出,用“、”(逗號和空格)分隔并用大括號括起來,從而形成一組整數(shù)的常用數(shù)學符號。
例子:
BitSet drPepper = new BitSet();
現(xiàn)在 drPepper.toString() 返回“{}”。
drPepper.set(2);
現(xiàn)在 drPepper.toString() 返回“{2}”。
drPepper.set(4); drPepper.set(10);
現(xiàn)在 drPepper.toString() 返回“{2, 4, 10}”。
覆蓋:
類 Object 中的 toString
返回:
此位集的字符串表示
public IntStream stream()
返回此 BitSet 包含處于設(shè)置狀態(tài)的位的索引流。 索引按從低到高的順序返回。 流的大小是設(shè)置狀態(tài)的位數(shù),等于 cardinality() 方法返回的值。
在終端流操作執(zhí)行期間,位設(shè)置必須保持不變。 否則,終端流操作的結(jié)果是不確定的。
返回:
表示集合索引的整數(shù)流
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: