1、布隆过滤器简介
布隆过滤器是一种数据结构,是一个很长的二进制向量和一系列随机映射函数,可以将其看成一个二进制数组。布隆过滤器可以用于检索一个元素是否在一个集合中。既然布隆过滤器是二进制,那么里面存放的不是0,就是1,但是初始默认值都是0。
向布隆过滤器添加数据
前面我们说过布隆过滤器就像一个二进制数组一样,那我们如何向布隆过滤器中添加一个数据呢?
如下图所示:当要向布隆过滤器中添加一个元素key时,我们通过多个hash函数,算出一个值,然后将这个值所在的方格置为1。
比如,下图hash1(key)=1,那么在第2个格子将0变为1(数组是从0开始计数的),hash2(key)=7,那么将第8个格子置位1,依次类推。
判断布隆过滤器中某个数据是否存在
如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢(O(n),O(logn))。不过世界上还有一种叫作散列表(又叫哈希表,Hash table)的数据结构。它可