Java BitSet 類別:初學者的友善指南

你好,有抱負的 Java 程式設計師!今天,我們將進入 Java BitSet 類別的精彩世界。如果你是编程新手,不用擔心;我將成為你的友善指南,一步一步地解釋一切。讓我們一起深入探險吧!

Java - BitSet Class

介紹

想象一下,你有一大袋彈珠,你想記錄你擁有和沒有的彈珠。Java 中的 BitSet 類別就像那個袋子,但裡面儲存的是位元(0和1)。它是一個特殊的工具,讓我們能夠有效地處理位元組。

在電腦世界裡,我們經常需要處理布林值集合(真或假)。BitSet 類別為我們提供了一種整潔的方式來做到這一點,而不會使用太多記憶體。這就像有一排可以開關的燈鈕。

類別聲明

在 Java 中,BitSet 類別是 java.util 包的一部分。要在你的程式中使用它,你需要像這樣導入:

import java.util.BitSet;

將這一行視為告訴 Java:“嘿,我想在我的程式中使用那個很酷的 BitSet 工具!”

類別構造器

當我們想要創建一個新的 BitSet 時,我們有幾個選項。這就像選擇你想讓你的彈珠袋有多大。以下是一些構造器:

構造器 描述
BitSet() 創建一個初始大小為 64 位的 BitSet
BitSet(int nbits) 創建一個具有特定初始大小的 BitSet

讓我們看看這些是如何工作的:

BitSet bitSet1 = new BitSet(); // 預設大小(64位)
BitSet bitSet2 = new BitSet(128); // 初始大小為 128 位

在第一行中,我們創建了一個具有預設大小的 BitSet。在第二行中,我們說:“我想要一個可以至少容納 128 位的 BitSet,請!”

類別方法

現在,讓我們看看我們可以用 BitSet 做的一些酷事。這些就像你可以用彈珠袋玩的不同方式:

方法 描述
void set(int bitIndex) 將指定索引的位元設置為 true
void clear(int bitIndex) 將指定索引的位元設置為 false
boolean get(int bitIndex) 返回指定索引的位元的值
void and(BitSet set) 進行一個邏輯 AND 運算,與此 BitSet 和指定的 BitSet
void or(BitSet set) 進行一個邏輯 OR 運算,與此 BitSet 和指定的 BitSet
void xor(BitSet set) 進行一個邏輯 XOR 運算,與此 BitSet 和指定的 BitSet
int cardinality() 返回在此 BitSet 中設置為 true 的位元數量
boolean isEmpty() 如果此 BitSet 不包含設置為 true 的位元,則返回 true
int length() 返回此 BitSet 的“邏輯大小”

讓我們看看其中一些是如何工作的:

BitSet myBitSet = new BitSet(8);

// 設置一些位元
myBitSet.set(0); // 將第一個位元設置為 true
myBitSet.set(3); // 將第四個位元設置為 true

System.out.println("設置位元後的 BitSet: " + myBitSet);

// 檢查一位元
boolean isSet = myBitSet.get(3);
System.out.println("第三位元被設置了嗎? " + isSet);

// 清除一位元
myBitSet.clear(0);
System.out.println("清除第一位元後的 BitSet: " + myBitSet);

// 檢查基數(設置的位元數量)
int setbits = myBitSet.cardinality();
System.out.println("設置的位元數量: " + setbits);

在這個例子中,我們像玩一排燈鈕一樣玩我们的 BitSet。我們打開一些(設置),檢查它們是否打開(獲取),關閉一些(清除),並計算打開的數量(基數)。

繼承的方法

BitSet 類別還從其父類繼承了方法。這就像隨彈珠袋獲得一些額外的工具。這些包括從 java.lang.Object 繼承的方法,如 clone()、equals() 和 hashCode()。你可以像對待任何其他 Java 物件一樣使用這些方法。

創建 BitSet 並對 BitSet 進行操作示例

現在,讓我們通過一個有趣的例子將它們結合起來。我們將創建兩個 BitSet 並對它們進行一些操作:

import java.util.BitSet;

public class BitSetFun {
public static void main(String[] args) {
// 創建兩個 BitSet
BitSet bitSet1 = new BitSet(8);
BitSet bitSet2 = new BitSet(8);

// 在 bitSet1 中設置一些位元
bitSet1.set(0);
bitSet1.set(2);
bitSet1.set(4);
bitSet1.set(6);

// 在 bitSet2 中設置一些位元
bitSet2.set(1);
bitSet2.set(2);
bitSet2.set(3);
bitSet2.set(5);

System.out.println("BitSet1: " + bitSet1);
System.out.println("BitSet2: " + bitSet2);

// 進行 AND 運算
BitSet andResult = (BitSet) bitSet1.clone();
andResult.and(bitSet2);
System.out.println("AND 結果: " + andResult);

// 進行 OR 運算
BitSet orResult = (BitSet) bitSet1.clone();
orResult.or(bitSet2);
System.out.println("OR 結果: " + orResult);

// 進行 XOR 運算
BitSet xorResult = (BitSet) bitSet1.clone();
xorResult.xor(bitSet2);
System.out.println("XOR 結果: " + xorResult);
}
}

輸出

當你運行這個程序時,你將會看到類似以下的内容:

BitSet1: {0, 2, 4, 6}
BitSet2: {1, 2, 3, 5}
AND 結果: {2}
OR 結果: {0, 1, 2, 3, 4, 5, 6}
XOR 結果: {0, 1, 3, 4, 5, 6}

讓我們來解釋一下:

  1. 我們創建了兩個 BitSet,並在每個中設置了一些位元。
  2. AND 運算僅保留在兩個 BitSet 中都設置的位元(在這裡,只有第二位)。
  3. OR 運算保留在任何一個 BitSet 中設置的所有位元。
  4. XOR 運算保留在一個 BitSet 中設置但在另一個中未設置的位元。

想象一下,你和你的朋友每個人都有 一套彩色彈珠。AND 運算就像只保留你們兩個都有的顏色。OR 運算就像結合你們所有的彈珠。XOR 運算就像只保留其中一個有的顏色,但不是兩個都有。

這就是了!你剛剛踏出了 Java 中 BitSet 世界 的第一步。記住,練習成就完美,所以不要害怕實驗這些概念。誰知道呢?你可能會發現自己在未來使用 BitSet 來解決一些非常酷的問題!

編程愉快,願你的位元永遠設置正確!?

Credits: Image by storyset