查询过程
Bloom过滤器的主要功能是查询数据,查询过程如下:
K个hash值是通过K个哈希函数计算出来的。
通过hash值找到相应的二进制数组下标。
判断:如果一个位置的二进制数据为0,则该数据不存在。如果都是1,数据就存在于集合中。(下面将讨论这些缺点)
删除过程
通常不能删除布隆过滤器中的数据,这是一个缺点,我们将在下面进行分析。
布隆过滤器的优缺点:
优点
因为存储的是二进制数据,所以占用的空间很小。
它的插入和查询速度非常快,时间复杂,可以联想到HashMap的过程。
保密性很好,因为它不存储任何原始数据,只有二进制数据。
缺点
这将回到我们上面提到的缺点。
添加数据是通过计算数据的hash值来计算的,所以很有可能两个不同的数据计算得到相同的hash值。
实现布隆过滤器:
实现方式有很多种,其中之一就是Guava提供的。
引入Guavapom配置。
实现代码
以下顺便测量一下它的误判率.