要實現布隆過濾器,可以使用Java中的BitSet類和Hash函數來實現。以下是一個簡單的Java代碼示例:
import java.util.BitSet;
public class BloomFilter {
private BitSet bitSet;
private int size;
private HashFunction[] hashFunctions;
public BloomFilter(int size, int numHashFunctions) {
this.size = size;
this.bitSet = new BitSet(size);
this.hashFunctions = new HashFunction[numHashFunctions];
for (int i = 0; i < numHashFunctions; i++) {
this.hashFunctions[i] = new HashFunction(size);
}
}
public void add(String element) {
for (HashFunction hashFunction : hashFunctions) {
int hash = hashFunction.hash(element);
bitSet.set(hash, true);
}
}
public boolean contains(String element) {
for (HashFunction hashFunction : hashFunctions) {
int hash = hashFunction.hash(element);
if (!bitSet.get(hash)) {
return false;
}
}
return true;
}
private class HashFunction {
private int size;
public HashFunction(int size) {
this.size = size;
}
public int hash(String element) {
return element.hashCode() % size;
}
}
}
在上面的代碼中,我們定義了一個BloomFilter類,其中包含一個BitSet用于存儲元素的狀態,一個size表示過濾器的大小,一個hashFunctions數組存儲Hash函數。我們還定義了一個HashFunction內部類來生成Hash值。
在構造函數中,我們初始化了BitSet和Hash函數數組。add方法用于向過濾器中添加元素,contains方法用于檢查過濾器中是否包含元素。
使用布隆過濾器時,可以創建一個BloomFilter實例,然后調用add方法添加元素,最后調用contains方法檢查元素是否存在。