添加依赖:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-bloomFilter</artifactId>
<version>5.3.10</version>
</dependency>
循环10000000次,创建10000000个9位随机数。使用单机版布隆过滤器
public static void main(String[] args) {
BitMapBloomFilter filter = new BitMapBloomFilter(100);
String aa = "";
Set<String> set = new HashSet<String>();
List<String> list = new ArrayList<String>();
for (int i=0;i<10000000;i++){
while (true){
//创建9位的随机数
aa = RandomUtil.randomInt(100000000,999999999)+"";
//如果过滤器中不存在,就跳出循环进行添加集合
if (!filter.contains(aa)){
break;
}else {
System.out.println("过滤存在,aa="+aa);
}
}
filter.add(aa);
set.add(aa);
list.add(aa);
}
System.out.println(list.size());
System.out.println(set.size());
}
执行结果如下:
image.png
结果可见,set和list长度一样,并且都是长度都是10000000,说明过滤生效,10000000的数据不重复。