JavaTM 2 Platform
Standard Ed. 6

java.util
類別 BitSet

java.lang.Object
  繼承者 java.util.BitSet
所有已實作的介面:
Serializable, Cloneable

public class BitSet
extends Object
implements Cloneable, Serializable

此類別實作了一個按需增長的位元向量。位 set 的每個元件都有一個 boolean 值。用非負的整數將 BitSet 的位編入索引。可以對每個編入索引的位進行測試、設置或者清除。通過邏輯與、邏輯或和邏輯異或操作,可以使用一個 BitSet 修改另一個 BitSet 的內容。

預設情況下,set 中所有位的初始值都是 false

每個位 set 都有一個當前大小,也就是該位 set 當前所用空間的位數。注意,這個大小與位 set 的實作有關,所以它可能隨實作的不同而更改。位 set 的長度與位 set 的邏輯長度有關,並且是與實作無關而定義的。

除非另行說明,否則將 null 參數傳遞給 BitSet 中的任何方法都將導致 NullPointerException

在沒有外部同步的情況下,多個執行緒操作一個 BitSet 是不安全的。

從以下版本開始:
JDK1.0
另請參見:
序列化表格

建構子摘要
BitSet()
          創建一個新的位 set。
BitSet(int nbits)
          創建一個位 set,它的初始大小足以顯式表示索引範圍在 0nbits-1 的位。
 
方法摘要
 void and(BitSet set)
          對此目標位 set 和參數位 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()
          返回此位 set 的雜湊碼值。
 boolean intersects(BitSet set)
          如果指定的 BitSet 中有設置為 true 的位,並且在此 BitSet 中也將其設置為 true,則返回 ture。
 boolean isEmpty()
          如果此 BitSet 中沒有包含任何設置為 true 的位,則返回 ture。
 int length()
          返回此 BitSet 的“邏輯大小”:BitSet 中最高設置位的索引加 1。
 int nextClearBit(int fromIndex)
          返回第一個設置為 false 的位的索引,這發生在指定的起始索引或之後的索引上。
 int nextSetBit(int fromIndex)
          返回第一個設置為 true 的位的索引,這發生在指定的起始索引或之後的索引上。
 void or(BitSet set)
          對此位 set 和位 set 參數執行邏輯操作。
 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 表示位值時實際使用空間的位數。
 String toString()
          返回此位 set 的字元串表示形式。
 void xor(BitSet set)
          對此位 set 和位 set 參數執行邏輯異或操作。
 
從類別 java.lang.Object 繼承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

建構子詳細資訊

BitSet

public BitSet()
創建一個新的位 set。所有的位初始均為 false


BitSet

public BitSet(int nbits)
創建一個位 set,它的初始大小足以顯式表示索引範圍在 0nbits-1 的位。所有的位初始均為 false

參數:
nbits - 位 set 的初始大小。
拋出:
NegativeArraySizeException - 如果指定的初始大小為負。
方法詳細資訊

flip

public void flip(int bitIndex)
將指定索引處的位設置為其當前值的補碼。

參數:
bitIndex - 要翻轉位的索引。
拋出:
IndexOutOfBoundsException - 如果指定的索引為負。
從以下版本開始:
1.4

flip

public void flip(int fromIndex,
                 int toIndex)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)範圍內的每個位設置為其當前值的補碼。

參數:
fromIndex - 第一個要翻轉位的索引。
toIndex - 最後一個要翻轉位之後那個位的索引。
拋出:
IndexOutOfBoundsException - 如果 fromIndex 為負,或者 toIndex 為負,或者 fromIndex 大於 toIndex
從以下版本開始:
1.4

set

public void set(int bitIndex)
將指定索引處的位設置為 true

參數:
bitIndex - 一個位索引。
拋出:
IndexOutOfBoundsException - 如果指定的索引為負。
從以下版本開始:
JDK1.0

set

public void set(int bitIndex,
                boolean value)
將指定索引處的位設置為指定的值。

參數:
bitIndex - 一個位索引。
value - 要設置的 boolean 值。
拋出:
IndexOutOfBoundsException - 如果指定的索引為負。
從以下版本開始:
1.4

set

public void set(int fromIndex,
                int toIndex)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)範圍內的位設置為 true

參數:
fromIndex - 第一個要設置位的索引。
toIndex - 最後一個要設置位之後那個位的索引。
拋出:
IndexOutOfBoundsException - 如果 fromIndex 為負,或者 toIndex 為負,或者 fromIndex 大於 toIndex
從以下版本開始:
1.4

set

public void set(int fromIndex,
                int toIndex,
                boolean value)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)範圍內的位設置為指定的值。

參數:
fromIndex - 第一個要設置位的索引。
toIndex - 最後一個要設置位之後那個位的索引
value - 所選擇的位上要設置的值
拋出:
IndexOutOfBoundsException - 如果 fromIndex 為負,或者 toIndex 為負,或者 fromIndex 大於 toIndex
從以下版本開始:
1.4

clear

public void clear(int bitIndex)
將索引指定處的位設置為 false

參數:
bitIndex - 要清除位的索引。
拋出:
IndexOutOfBoundsException - 如果指定的索引為負。
從以下版本開始:
JDK1.0

clear

public void clear(int fromIndex,
                  int toIndex)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)範圍內的位設置為 false

參數:
fromIndex - 第一個要清除位的索引。
toIndex - 最後一個要清除位之後那個位的索引。
拋出:
IndexOutOfBoundsException - 如果 fromIndex 為負,或者 toIndex 為負,或者 fromIndex 大於 toIndex
從以下版本開始:
1.4

clear

public void clear()
將此 BitSet 中的所有位設置為 false

從以下版本開始:
1.4

get

public boolean get(int bitIndex)
返回指定索引處的位值。如果當前已設置了此 BitSet 中索引 bitIndex 處的位,則返回 true;否則結果為 false

參數:
bitIndex - 位索引。
返回:
指定索引處的位值。
拋出:
IndexOutOfBoundsException - 如果指定的索引為負。

get

public BitSet get(int fromIndex,
                  int toIndex)
返回一個新的 BitSet,它由此 BitSet 中從 fromIndex(包括)到 toIndex(不包括)範圍內的位組成。

參數:
fromIndex - 第一個要包括位的索引。
toIndex - 最後一個要包括位之後那個位的索引。
返回:
包含此 BitSet 某個範圍內各位的新 BitSet
拋出:
IndexOutOfBoundsException - 如果 fromIndex 為負,或者 toIndex 為負,或者 fromIndex 大於 toIndex
從以下版本開始:
1.4

nextSetBit

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 - 開始檢查的索引(包括)。
返回:
下一個已設置為 true 位的索引。
拋出:
IndexOutOfBoundsException - 如果指定的索引為負。
從以下版本開始:
1.4

nextClearBit

public int nextClearBit(int fromIndex)
返回第一個設置為 false 的位的索引,這發生在指定的起始索引或之後的索引上。

參數:
fromIndex - 開始檢查的索引(包括)。
返回:
下一個已清除位的索引。
拋出:
IndexOutOfBoundsException - 如果指定的索引為負。
從以下版本開始:
1.4

length

public int length()
返回此 BitSet 的“邏輯大小”:BitSet 中最高設置位的索引加 1。如果 BitSet 中不包含任何設置位,則返回零。

返回:
BitSet 的邏輯大小。
從以下版本開始:
1.2

isEmpty

public boolean isEmpty()
如果此 BitSet 中沒有包含任何設置為 true 的位,則返回 ture。

返回:
指示此 BitSet 是否為空的 boolean 值。
從以下版本開始:
1.4

intersects

public boolean intersects(BitSet set)
如果指定的 BitSet 中有設置為 true 的位,並且在此 BitSet 中也將其設置為 true,則返回 ture。

參數:
set - 要與其交叉的 BitSet
返回:
指示此 BitSet 與指定的 BitSet 是否存在交叉的 boolean 值。
從以下版本開始:
1.4

cardinality

public int cardinality()
返回此 BitSet 中設置為 true 的位數。

返回:
BitSet 中設置為 true 的位數。
從以下版本開始:
1.4

and

public void and(BitSet set)
對此目標位 set 和參數位 set 執行邏輯操作。當且僅當目標位 set 的初始值均為 true,並且位 set 參數中對應位的值也為 true 時才修改此位 set,這樣其內每個位的值均為 true

參數:
set - 一個位 set。

or

public void or(BitSet set)
對此位 set 和位 set 參數執行邏輯操作。當且僅當此位 set 中某個位的值為 true,或者位 set 參數中對應位的值為 true 時才修改此位 set,這樣其內該位的值為 true

參數:
set - 一個位 set。

xor

public void xor(BitSet set)
對此位 set 和位 set 參數執行邏輯異或操作。當且僅當以下語句之一成立時才修改此位 set,這樣其內某個位的值為 true

參數:
set - 一個位 set。

andNot

public void andNot(BitSet set)
清除此 BitSet 中所有的位,其相應的位在指定的 BitSet 中已設置。

參數:
set - 用來屏蔽此 BitSetBitSet
從以下版本開始:
JDK1.2

hashCode

public int hashCode()
返回此位 set 的雜湊碼值。雜湊碼只取決於此 BitSet 中已經設置的位。計算其雜湊碼的演算法可以描述如下。

假定 BitSet 中的位將存儲在一個 long 型的陣列(比方說叫 words)中,那麼當且僅當表達式

((k>>6) < words.length) && ((words[k>>6] & (1L << (bit & 0x3F))) != 0)
為 ture 時,才在 BitSet 中設置位 k(對於非負的 k 值)。然後以下定義的 hashCode 方法才是實際演算法的正確實作:
 public int hashCode() {
      long h = 1234;
      for (int i = words.length; --i >= 0; ) {
           h ^= words[i] * (i + 1);
      }
      return (int)((h >> 32) ^ h);
 }
注意,如果位的設置改變,則雜湊碼值也將發生更改。

覆寫 ObjecthashCode 方法。

覆寫:
類別 Object 中的 hashCode
返回:
此位 set 的雜湊碼值。
另請參見:
Object.equals(java.lang.Object), Hashtable

size

public int size()
返回此 BitSet 表示位值時實際使用空間的位數。set 中值最大的元素是第 size - 1 個元素。

返回:
此位 set 中當前的位數。

equals

public boolean equals(Object obj)
將此物件與指定的物件進行比較。當且僅當參數不是 null,並且是一個與此位 set 有著完全相同的位 set 設置(為 true)的 Bitset 物件時,結果才為 true。也就是說,對於每個非負的 int 索引 k
((BitSet)obj).get(k) == this.get(k)
一定為 ture。兩個位 set 的當前大小不用進行比較。

覆寫 Objectequals 方法。

覆寫:
類別 Object 中的 equals
參數:
obj - 要與之比較的物件。
返回:
如果物件相同,則返回 true;否則返回 false
另請參見:
size()

clone

public Object clone()
複製此 BitSet,產生一個與之相等的新 BitSet。複製得到的是另一個位 set,它與此位 set 有著完全相同的、設置為 true)的位。

覆寫 Objectclone 方法。

覆寫:
類別 Object 中的 clone
返回:
此位 set 的一個副本。
另請參見:
size()

toString

public String toString()
返回此位 set 的字元串表示形式。對於此 BitSet 中包含的、處於已設置狀態的每個位的索引,在結果中會包含這些索引的十進製表示形式。這些索引是按從低到高的順序列出的、之間用 "," 分隔(一個逗號加一個空格),並用括號括起來,結果形成了一組整數的常用數學符號。

覆寫 ObjecttoString 方法。

範例:

 BitSet drPepper = new BitSet();
現在 drPepper.toString() 返回 "{}"。

 drPepper.set(2);
現在 drPepper.toString() 返回 "{2}"。

 drPepper.set(4);
 drPepper.set(10);
現在 drPepper.toString() 返回 "{2, 4, 10}"。

覆寫:
類別 Object 中的 toString
返回:
此位 set 的字元串表示形式。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only