This commit is contained in:
Looly
2020-04-30 09:11:22 +08:00
parent 484d705638
commit ea96eecd4b
10 changed files with 241 additions and 35 deletions

View File

@@ -13,35 +13,36 @@ import cn.hutool.core.util.NumberUtil;
* 2.散列hash映射到数组的bit位置 <br>
* 3.验证<br>
* 此实现方式可以指定Hash算法
*
*
* @author Ansj
*/
public class BitMapBloomFilter implements BloomFilter{
public class BitMapBloomFilter implements BloomFilter {
private static final long serialVersionUID = 1L;
private BloomFilter[] filters;
/**
* 构造使用默认的5个过滤器
*
* @param m M值决定BitMap的大小
*/
public BitMapBloomFilter(int m) {
long mNum =NumberUtil.div(String.valueOf(m), String.valueOf(5)).longValue();
long mNum = NumberUtil.div(String.valueOf(m), String.valueOf(5)).longValue();
long size = mNum * 1024 * 1024 * 8;
filters = new BloomFilter[]{
new DefaultFilter(size),
new ELFFilter(size),
new JSFilter(size),
new PJWFilter(size),
new SDBMFilter(size)
new DefaultFilter(size),
new ELFFilter(size),
new JSFilter(size),
new PJWFilter(size),
new SDBMFilter(size)
};
}
/**
* 使用自定的多个过滤器建立BloomFilter
*
* @param m M值决定BitMap的大小
*
* @param m M值决定BitMap的大小
* @param filters Bloom过滤器列表
*/
public BitMapBloomFilter(int m, BloomFilter... filters) {
@@ -51,6 +52,7 @@ public class BitMapBloomFilter implements BloomFilter{
/**
* 增加字符串到Filter映射中
*
* @param str 字符串
*/
@Override
@@ -64,6 +66,7 @@ public class BitMapBloomFilter implements BloomFilter{
/**
* 是否可能包含此字符串,此处存在误判
*
* @param str 字符串
* @return 是否存在
*/