com.xiaoleilu.hutool.bloomFilter
类 BloomFilter2

java.lang.Object
  继承者 com.xiaoleilu.hutool.bloomFilter.BloomFilter2

public class BloomFilter2
extends Object

BloomFilter实现方式2,此方式使用BitSet存储。
Hash算法的使用使用固定顺序,只需指定个数既可

作者:
loolly

构造方法摘要
BloomFilter2(int c, int n, int k)
          构造一个布隆过滤器,过滤器的容量为c * n 个bit.
 
方法摘要
 boolean contains(String str)
          判定是否包含指定字符串
static int[] createHashes(String str, int hashNumber)
          将字符串的字节表示进行多哈希编码.
 double getFalsePositiveProbability()
           
static int hash(String str, int k)
          计算Hash值
 void init(String path, String charset)
          通过文件初始化过滤器.
static void main(String[] args)
           
 void put(String str)
          将字符串加入到BloomFilter中
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

BloomFilter2

public BloomFilter2(int c,
                    int n,
                    int k)
构造一个布隆过滤器,过滤器的容量为c * n 个bit.

参数:
c - 当前过滤器预先开辟的最大包含记录,通常要比预计存入的记录多一倍.
n - 当前过滤器预计所要包含的记录.
k - 哈希函数的个数,等同每条记录要占用的bit数.
方法详细信息

init

public void init(String path,
                 String charset)
          throws IOException
通过文件初始化过滤器.

参数:
path - 文件路径
charset - 字符集
抛出:
IOException

put

public void put(String str)
将字符串加入到BloomFilter中

参数:
str - 字符串

contains

public boolean contains(String str)
判定是否包含指定字符串

参数:
str - 字符串
返回:
是否包含,存在误差

getFalsePositiveProbability

public double getFalsePositiveProbability()
返回:
得到当前过滤器的错误率.

createHashes

public static int[] createHashes(String str,
                                 int hashNumber)
将字符串的字节表示进行多哈希编码.

参数:
str - 待添加进过滤器的字符串字节表示.
hashNumber - 要经过的哈希个数.
返回:
各个哈希的结果数组.

hash

public static int hash(String str,
                       int k)
计算Hash值

参数:
str - 被计算Hash的字符串
k - Hash算法序号
返回:
Hash值

main

public static void main(String[] args)
                 throws Exception
抛出:
Exception


Copyright © 2014. All rights reserved.