# Java Bitset類
一個Bitset類創建一種特殊類型的數組來保存位值。BitSet中數組大小會隨需要增加。這和位向量(vector of bits)比較類似。
這是一個傳統的類,但它在Java 2中被完全重新設計。
BitSet定義了兩個構造方法。
第一個構造方法創建一個默認的對象:
```
BitSet()
```
第二個方法允許用戶指定初始大小。所有位初始化為0。
```
BitSet(int size)
```
BitSet中實現了Cloneable接口中定義的方法如下表所列:
| 方法 | 描述 |
| --- | --- |
| void and(BitSet bitSet) | 對此目標位 set 和參數位 set 執行邏輯與操作。 |
| void andNot(BitSet bitSet) | 清除此?BitSet?中所有的位,其相應的位在指定的?BitSet?中已設置。 |
| int cardinality( ) | 返回此?BitSet?中設置為?true?的位數。 |
| void clear( ) | 將此 BitSet 中的所有位設置為?false。 |
| void clear(int index) | 將索引指定處的位設置為?false。 |
| void clear(int startIndex, int endIndex) | 將指定的?fromIndex(包括)到指定的?toIndex(不包括)范圍內的位設置為?false。 |
| Object clone( ) | 復制此?BitSet,生成一個與之相等的新?BitSet。 |
| boolean equals(Object bitSet) | 將此對象與指定的對象進行比較。 |
| void flip(int index) | 將指定索引處的位設置為其當前值的補碼。 |
| void flip(int startIndex, int endIndex) | 將指定的?fromIndex(包括)到指定的?toIndex(不包括)范圍內的每個位設置為其當前值的補碼。 |
| boolean get(int index) | 返回指定索引處的位值。 |
| BitSet get(int startIndex, int endIndex) | 返回一個新的?BitSet,它由此?BitSet?中從?fromIndex(包括)到?toIndex(不包括)范圍內的位組成。 |
| int hashCode( ) | 返回此位 set 的哈希碼值。 |
| boolean intersects(BitSet bitSet) | 如果指定的?BitSet?中有設置為?true?的位,并且在此?BitSet?中也將其設置為?true,則返回 ture。 |
| boolean isEmpty( ) | 如果此?BitSet?中沒有包含任何設置為?true?的位,則返回 ture。 |
| int length( ) | 返回此?BitSet?的"邏輯大小":BitSet?中最高設置位的索引加 1。 |
| int nextClearBit(int startIndex) | 返回第一個設置為?false?的位的索引,這發生在指定的起始索引或之后的索引上。 |
| int nextSetBit(int startIndex) | 返回第一個設置為?true?的位的索引,這發生在指定的起始索引或之后的索引上。 |
| void or(BitSet bitSet) | 對此位 set 和位 set 參數執行邏輯或操作。 |
| void set(int index) | 將指定索引處的位設置為?true。 |
| void set(int index, boolean v) | ?將指定索引處的位設置為指定的值。 |
| void set(int startIndex, int endIndex) | 將指定的?fromIndex(包括)到指定的?toIndex(不包括)范圍內的位設置為?true。 |
| void set(int startIndex, int endIndex, boolean v) | 將指定的?fromIndex(包括)到指定的?toIndex(不包括)范圍內的位設置為指定的值。 |
| int size( ) | 返回此?BitSet?表示位值時實際使用空間的位數。 |
| String toString( ) | 返回此位 set 的字符串表示形式。 |
| void xor(BitSet bitSet) | 對此位 set 和位 set 參數執行邏輯異或操作。 |
### 實例
下面的程序說明這個數據結構支持的幾個方法:
```
import java.util.BitSet;
public class BitSetDemo {
public static void main(String args[]) {
BitSet bits1 = new BitSet(16);
BitSet bits2 = new BitSet(16);
// set some bits
for(int i=0; i<16; i++) {
if((i%2) == 0) bits1.set(i);
if((i%5) != 0) bits2.set(i);
}
System.out.println("Initial pattern in bits1: ");
System.out.println(bits1);
System.out.println("\nInitial pattern in bits2: ");
System.out.println(bits2);
// AND bits
bits2.and(bits1);
System.out.println("\nbits2 AND bits1: ");
System.out.println(bits2);
// OR bits
bits2.or(bits1);
System.out.println("\nbits2 OR bits1: ");
System.out.println(bits2);
// XOR bits
bits2.xor(bits1);
System.out.println("\nbits2 XOR bits1: ");
System.out.println(bits2);
}
}
```
以上實例編譯運行結果如下:
```
Initial pattern in bits1:
{0, 2, 4, 6, 8, 10, 12, 14}
Initial pattern in bits2:
{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}
bits2 AND bits1:
{2, 4, 6, 8, 12, 14}
bits2 OR bits1:
{0, 2, 4, 6, 8, 10, 12, 14}
bits2 XOR bits1:
{}
```
- Java 基礎
- Java 簡介
- Java開發環境配置
- Java基礎語法
- Java對象和類
- Java基本數據類型
- Java變量類型
- Java修飾符
- Java運算符
- Java循環結構 - for, while 及 do...while
- Java分支結構 - if...else/switch
- Java Number類
- Java Character類
- Java String類
- Java StringBuffer和StringBuilder類
- Java 數組
- Java 日期時間
- Java正則表達式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 異常處理
- Java 面向對象
- Java 繼承
- Java 重寫(Override)與重載(Overload)
- Java 多態
- Java 抽象類
- Java 接口
- Java 包(package)
- Java 高級教程
- Java 數據結構
- Java Enumeration接口
- Java Bitset類
- Java Vector 類
- Java Stack 類
- Java Dictionary 類
- Java Hashtable 接口
- Java Properties 接口
- Java 集合框架
- Java 泛型
- Java序列化
- Java 網絡編程
- Java 發送郵件
- Java 多線程編程
- Java Applet基礎
- Java 文檔注釋
- Servlet 教程
- Servlet 簡介
- Servlet 環境設置
- Servlet 生命周期
- Servlet 實例
- Servlet 表單數據
- Servlet 客戶端 HTTP 請求
- Servlet 服務器 HTTP 響應
- Servlet HTTP 狀態碼
- Servlet 編寫過濾器
- Servlet 異常處理
- Servlet Cookies 處理
- Servlet Session 跟蹤
- Servlet 數據庫訪問
- Servlet 文件上傳
- Servlet 處理日期
- Servlet 網頁重定向
- Servlet 點擊計數器
- Servlet 自動刷新頁面
- Servlet 發送電子郵件
- Servlet 包
- Servlet 調試
- Servlet 國際化
- JSP 基礎
- JSP 簡介
- JSP 開發環境搭建
- JSP 結構
- JSP 生命周期
- JSP 語法
- JSP 指令
- JSP 動作元素
- JSP 動作元素
- JSP 隱含對象
- JSP 客戶端請求
- JSP 服務器響應
- JSP HTTP 狀態碼
- JSP 表單處理
- JSP 過濾器
- JSP Cookies 處理
- JSP Session
- JSP 文件上傳
- JSP 日期處理
- JSP 頁面重定向
- JSP 點擊量統計
- JSP 自動刷新
- JSP 發送郵件
- JSP 高級教程
- JSP 標準標簽庫(JSTL)
- JSP 連接數據庫
- JSP XML 數據處理
- JSP JavaBean
- JSP 自定義標簽
- JSP 表達式語言
- JSP 異常處理
- JSP 調試
- JSP 國際化
- 免責聲明