Class BitSetBloomFilter

java.lang.Object
org.aoju.bus.core.bloom.BitSetBloomFilter
All Implemented Interfaces:
Serializable, BloomFilter

public class BitSetBloomFilter extends Object implements BloomFilter
BloomFilter实现方式2,此方式使用BitSet存储 Hash算法的使用使用固定顺序,只需指定个数即可
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Constructor Details

    • BitSetBloomFilter

      public BitSetBloomFilter(int c, int n, int k)
      构造一个布隆过滤器,过滤器的容量为c * n 个bit
      Parameters:
      c - 当前过滤器预先开辟的最大包含记录,通常要比预计存入的记录多一倍
      n - 当前过滤器预计所要包含的记录
      k - 哈希函数的个数,等同每条记录要占用的bit数
  • Method Details

    • createHashes

      public static int[] createHashes(String text, int hashNumber)
      将字符串的字节表示进行多哈希编码
      Parameters:
      text - 待添加进过滤器的字符串字节表示
      hashNumber - 要经过的哈希个数
      Returns:
      各个哈希的结果数组
    • hash

      public static int hash(String text, int k)
      计算Hash值
      Parameters:
      text - 被计算Hash的字符串
      k - Hash算法序号
      Returns:
      Hash值
    • init

      public void init(String path, String charset) throws IOException
      通过文件初始化过滤器.
      Parameters:
      path - 文件路径
      charset - 字符集
      Throws:
      IOException - IO异常
    • add

      public boolean add(String text)
      Description copied from interface: BloomFilter
      在boolean的bitMap中增加一个字符串 如果存在就返回false如果不存在先增加这个字符串.再返回true
      Specified by:
      add in interface BloomFilter
      Parameters:
      text - 字符串
      Returns:
      是否加入成功,如果存在就返回false如果不存在返回true
    • contains

      public boolean contains(String text)
      判定是否包含指定字符串
      Specified by:
      contains in interface BloomFilter
      Parameters:
      text - 字符串
      Returns:
      是否包含,存在误差
    • getFalsePositiveProbability

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