一、 快速定义
(1)布隆过滤器实现的功能类似与Set集合,用于判断容器中数据是否存在。
(2)当Set集合特别大时,可以使用Bloom过滤器替代Set集合节省内存空间。
(3)与Set集合不同的是,布隆过滤器判断不存在时则一定不存在;判断存在时,则不一定存在(误判是一个小概率事件,取决与Bloom过滤器的大小和Hash算法)。
二、 实现原理
(1)初始化申请一个bitset集合,用于记录存储内容;确定一组hash函数及每个hash函数的算法(注意这里的hash取值范围是bitset长度,即保证每个bit位都有机会被hash到)。
(2)插入时,key依次调用hash方法,算出每个hash值,并通过该hash值找到具体的bit,同时置该bit值为1。
(3)查找时,key依次调用hash方法,算出每个hash值,并通过该hash值找到具体的bit,读取bit值,如果所有的值都同时为1时,即判定存在该key,否则判定不能存在。
三、回顾总结
(1)通常一组hash函数的个数是8。
(2)计算hash值时,通过& bitset长度的方法,保证hash取值范围。
(3)bitset长度越大,准确率越高,hash函数越多,准确率也越高。