• Java 資料結構教程

Java 資料結構 - Bitset 類



BitSet 類建立一個特殊型別的陣列,用於儲存位值。它可以根據需要增加大小,這使得它類似於位向量。BitSet 的索引由非負值表示,每個索引都儲存一個布林值。

Java 中的 BitSet 類

BitSet 類實現了一組位或標誌,可以單獨設定和清除。當您需要跟蹤一組布林值時,此類非常有用;您只需為每個值分配一個位,並根據需要設定或清除它。BitSet 陣列可以根據需要增加大小。這使得它類似於位向量。

BitSet 定義了以下兩個建構函式。

序號 建構函式和描述
1

BitSet( )

此建構函式建立一個預設物件。

2

BitSet(int size)

此建構函式允許您指定其初始大小,即它可以容納的位數。所有位都初始化為零。

BitSet 實現 Cloneable 介面並定義下表中列出的方法

序號 方法和描述
1

void and(BitSet bitSet)

將呼叫 BitSet 物件的內容與 bitSet 指定的內容進行 AND 運算。結果將放入呼叫物件中。

2

void andNot(BitSet bitSet)

對於 bitSet 中的每個 1 位,呼叫 BitSet 中的對應位將被清除。

3

int cardinality( )

返回呼叫物件中已設定位的數量。

4

void clear( )

將所有位清零。

5

void clear(int index)

將 index 指定的位清零。

6

void clear(int startIndex, int endIndex)

將 startIndex 到 endIndex 之間的位清零。

7

Object clone( )

複製呼叫 BitSet 物件。

8

boolean equals(Object bitSet)

如果呼叫位集等效於 bitSet 中傳遞的位集,則返回 true。否則,該方法返回 false。

9

void flip(int index)

反轉 index 指定的位。

10

void flip(int startIndex, int endIndex)

反轉 startIndex 到 endIndex 之間的位。

11

boolean get(int index)

返回指定索引處位的當前狀態。

12

BitSet get(int startIndex, int endIndex)

返回一個 BitSet,其中包含從 startIndex 到 endIndex 的位。呼叫物件不會更改。

13

int hashCode( )

返回呼叫物件的雜湊碼。

14

boolean intersects(BitSet bitSet)

如果呼叫物件和 bitSet 中至少有一對對應位為 1,則返回 true。

15

boolean isEmpty( )

如果呼叫物件中的所有位都為零,則返回 true。

16

int length( )

返回儲存呼叫 BitSet 內容所需的位數。此值由最後一個 1 位的位置確定。

17

int nextClearBit(int startIndex)

返回下一個清除位(即下一個零位)的索引,從 startIndex 指定的索引開始。

18

int nextSetBit(int startIndex)

返回下一個設定位(即下一個 1 位)的索引,從 startIndex 指定的索引開始。如果沒有設定位,則返回 -1。

19

void or(BitSet bitSet)

將呼叫 BitSet 物件的內容與 bitSet 指定的內容進行 OR 運算。結果將放入呼叫物件中。

20

void set(int index)

設定 index 指定的位。

21

void set(int index, boolean v)

將 index 指定的位設定為 v 中傳遞的值。True 設定位,False 清除位。

22

void set(int startIndex, int endIndex)

設定 startIndex 到 endIndex 之間的位。

23

void set(int startIndex, int endIndex, boolean v)

將 startIndex 到 endIndex 之間的位設定為 v 中傳遞的值。True 設定位,False 清除位。

24

int size( )

返回呼叫 BitSet 物件中的位數。

25

String toString( )

返回呼叫 BitSet 物件的字串等效項。

26

void xor(BitSet bitSet)

將呼叫 BitSet 物件的內容與 bitSet 指定的內容進行 XOR 運算。結果將放入呼叫物件中。

示例

以下程式說明了此資料結構支援的幾種方法

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("\n Initial 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:
{}
廣告

© . All rights reserved.