布隆过滤器的java代码实现
时间: 2024-07-22 09:01:15 浏览: 72
布隆过滤器是一种空间效率很高的概率型数据结构,用于判断一个元素是否在一个集合中,它利用位数组和一系列随机函数来实现。虽然可能会有误判(即认为不在集合中的元素实际上在),但不会漏判。以下是简单的Java实现:
```java
import java.util.BitSet;
public class BloomFilter {
private BitSet bitSet;
private int size;
private double errorRate;
// 初始化布隆过滤器
public BloomFilter(int size, double errorRate) {
this.size = size;
this.errorRate = errorRate;
bitSet = new BitSet(size);
}
// 添加元素到布隆过滤器
public void add(String element) {
for (int i = 0; i < hashFunctions.length; i++) {
int index = Math.abs(hash(element, i)) % size;
bitSet.set(index);
}
}
// 检查元素是否存在
public boolean contains(String element) {
for (int i = 0; i < hashFunctions.length; i++) {
int index = Math.abs(hash(element, i)) % size;
if (!bitSet.get(index)) {
return false; // 如果任何一个位置不匹配,就返回false
}
}
return true; // 如果所有位置都匹配,那么存在可能性较高
}
// 计算哈希值
private int hash(String s, int seed) {
int prime = 31;
int result = seed;
for (char c : s.toCharArray()) {
result *= prime;
result += c;
}
return result;
}
private int[] hashFunctions = { /* 可以添加几个不同的哈希函数 */ };
}
```
阅读全文