BitSet 定位與特性
- 本質:位元組成的 Vector,高效儲存大量開關狀態 (位標誌)。
- 最小長度 64 位 (Long),儲存極小數據 (如 8 位) 反而浪費,建議自定義類別。
- 非隨機訪問優化:訪問速度慢於原生陣列。
動態擴容行為與 Java 1.0 缺陷
- 理論上自動擴容,但 Java 1.0 實作嚴重缺陷:設置超過當前容量 1 位以上且未觸及邊界會拋出異常。
- 範例:
new BitSet(512) 分配 1024 位,直接 set(1024) 需先 set(1023) 否則 1.0 拋異常。
- Java 1.1 已修復。針對 1.0 開發請避免使用 BitSet。
操作範例:基本型別轉位模式
byte bt = (byte)rand.nextInt();
BitSet bb = new BitSet();
for (int i=7; i>=0; i--)
if (((1<
同樣處理 short (16位)、int (32位)。64 位以上測試驗證擴容行為。