原理在这里: http://www.cnblogs.com/allensun/archive/2011/02/16/1956532.html
构造方法如下:
/** * 构造Bloom Filter * @param capacity 支持的最大元素数 * @param errorRate 期望的最大错误率 */ public LongBloomFilter(int capacity, double errorRate) { // 计算实际需要的最小位数组长度m size = (int) Math.abs(capacity * Math.log(errorRate) / (Math.log(2) * Math.log(2))) + 1; // 计算最优的hash函数个数 hashNum = (int) (Math.log(2) * ((double) size / capacity)); bitVecter = new BitSet(size); }