BloomFilter是用来快速判断某个值在不在BloomFilter里面,比如邮件黑名单过滤、判断某个URL是否已经被爬取过等等。
实现原理跟Hash差不多,都是先计算出某个元素在数组中的位置来,再把这个元素放进去。只不过为了增大随机性,减少hash碰撞的概率,BloomFilter采取的是多个hash来计算元素的位置,还有就是扩大数组范围,使hash值均匀分布,进一步减少hash碰撞的概率。
根据原理我们知道虽然BloomFilter的设计是为了减少Hash的碰撞,但是还是有一定的几率会发生碰撞,所以BloomFilter会存在误判。