|
|
@@ -16,7 +16,7 @@ import java.util.BitSet;
|
|
|
*/
|
|
|
public class BitSetBloomFilter implements BloomFilter{
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
-
|
|
|
+
|
|
|
private final BitSet bitSet;
|
|
|
private final int bitSetSize;
|
|
|
private final int addedElements;
|
|
|
@@ -24,7 +24,7 @@ public class BitSetBloomFilter implements BloomFilter{
|
|
|
|
|
|
/**
|
|
|
* 构造一个布隆过滤器,过滤器的容量为c * n 个bit.
|
|
|
- *
|
|
|
+ *
|
|
|
* @param c 当前过滤器预先开辟的最大包含记录,通常要比预计存入的记录多一倍.
|
|
|
* @param n 当前过滤器预计所要包含的记录.
|
|
|
* @param k 哈希函数的个数,等同每条记录要占用的bit数.
|
|
|
@@ -38,7 +38,7 @@ public class BitSetBloomFilter implements BloomFilter{
|
|
|
|
|
|
/**
|
|
|
* 通过文件初始化过滤器.
|
|
|
- *
|
|
|
+ *
|
|
|
* @param path 文件路径
|
|
|
* @param charset 字符集
|
|
|
* @throws IOException IO异常
|
|
|
@@ -58,7 +58,7 @@ public class BitSetBloomFilter implements BloomFilter{
|
|
|
IoUtil.close(reader);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
@Override
|
|
|
public boolean add(String str) {
|
|
|
if (contains(str)) {
|
|
|
@@ -72,7 +72,7 @@ public class BitSetBloomFilter implements BloomFilter{
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 判定是否包含指定字符串
|
|
|
* @param str 字符串
|
|
|
@@ -89,7 +89,7 @@ public class BitSetBloomFilter implements BloomFilter{
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* @return 得到当前过滤器的错误率.
|
|
|
*/
|
|
|
@@ -100,7 +100,7 @@ public class BitSetBloomFilter implements BloomFilter{
|
|
|
|
|
|
/**
|
|
|
* 将字符串的字节表示进行多哈希编码.
|
|
|
- *
|
|
|
+ *
|
|
|
* @param str 待添加进过滤器的字符串字节表示.
|
|
|
* @param hashNumber 要经过的哈希个数.
|
|
|
* @return 各个哈希的结果数组.
|
|
|
@@ -109,7 +109,7 @@ public class BitSetBloomFilter implements BloomFilter{
|
|
|
int[] result = new int[hashNumber];
|
|
|
for(int i = 0; i < hashNumber; i++) {
|
|
|
result[i] = hash(str, i);
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
return result;
|
|
|
}
|