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