概念
Bloom Filter(以下简称 BF)是一个空间高效率的概率型数据结构,用来确定一个元素是否是集合中一员。
空间高效是指数据存储使用了 bit 的方式,相对来说比较紧凑,空间利用率较高。
概率型是指查询时返回两种结果:“一定不在” 和 “可能在”。
原理
本质就是bit 数组,初始化每个 bit 都是 0,添加一个元素时, 会使用 n 个 hash 函数计算出 n 个 值,每个值都是一个 bit 的位置,最后在 bit 数组中,将对应位的值置为1,这样每个元素都对应 n 个 bit 位。
查询一个元素是否在过滤器中时,首先使用 n 个 hash 函数计算出 n 个位置,然后到数组中去检查 对应 n 个下标的值是否为 1, 有一个是 0 ,直接返回 false 。
初始化:
插入元素:
查询: