Package org.aoju.bus.core.bloom
Class BitSetBloomFilter
java.lang.Object
org.aoju.bus.core.bloom.BitSetBloomFilter
- All Implemented Interfaces:
Serializable,BloomFilter
BloomFilter实现方式2,此方式使用BitSet存储
Hash算法的使用使用固定顺序,只需指定个数即可
- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean在boolean的bitMap中增加一个字符串 如果存在就返回false如果不存在先增加这个字符串.再返回trueboolean判定是否包含指定字符串static int[]createHashes(String text, int hashNumber) 将字符串的字节表示进行多哈希编码doublestatic int计算Hash值void通过文件初始化过滤器.
-
Constructor Details
-
BitSetBloomFilter
public BitSetBloomFilter(int c, int n, int k) 构造一个布隆过滤器,过滤器的容量为c * n 个bit- Parameters:
c- 当前过滤器预先开辟的最大包含记录,通常要比预计存入的记录多一倍n- 当前过滤器预计所要包含的记录k- 哈希函数的个数,等同每条记录要占用的bit数
-
-
Method Details
-
createHashes
将字符串的字节表示进行多哈希编码- Parameters:
text- 待添加进过滤器的字符串字节表示hashNumber- 要经过的哈希个数- Returns:
- 各个哈希的结果数组
-
hash
计算Hash值- Parameters:
text- 被计算Hash的字符串k- Hash算法序号- Returns:
- Hash值
-
init
通过文件初始化过滤器.- Parameters:
path- 文件路径charset- 字符集- Throws:
IOException- IO异常
-
add
Description copied from interface:BloomFilter在boolean的bitMap中增加一个字符串 如果存在就返回false如果不存在先增加这个字符串.再返回true- Specified by:
addin interfaceBloomFilter- Parameters:
text- 字符串- Returns:
- 是否加入成功,如果存在就返回
false如果不存在返回true
-
contains
判定是否包含指定字符串- Specified by:
containsin interfaceBloomFilter- Parameters:
text- 字符串- Returns:
- 是否包含,存在误差
-
getFalsePositiveProbability
public double getFalsePositiveProbability()- Returns:
- 得到当前过滤器的错误率
-