1.首先我们需要:
-
一个合适大小的位数组保存数据 BitSet
-
几个不同的哈希函数 通过随机种子seed定制不同的hash函数
-
添加元素到位数组(布隆过滤器)的方法实现 add方法
-
判断给定元素是否存在于位数组(布隆过滤器)的方法实现。 contains方法
2.其次我们需验证布隆过滤器,判正可能出错的这一点,在代码中进行了实现
详情见注释:
import java.util.BitSet;
/**
* 布隆过滤器:用BitSet实现,建议先了解BitSet数据结构的常见方法。
*/
public class BloomFilter {
/**
* 位数组的大小
*/
// private static final int DEFAULT_SIZE = 2 << 24; 代表bitset中实际位数的总个数,这种情况个数很多很多基本布隆不会判断失误
private static final int DEFAULT_SIZE = 5; //只有5位的情况下,布隆容易判断错误。
/**
* 通过这个数组可以创建 6 个不同的哈希函数
*/