diff --git a/hutool-core/src/main/java/cn/hutool/core/map/bitMap/BitMap.java b/hutool-core/src/main/java/cn/hutool/core/map/bitMap/BitMap.java deleted file mode 100755 index 5098bf263..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/map/bitMap/BitMap.java +++ /dev/null @@ -1,35 +0,0 @@ -package cn.hutool.core.map.bitMap; - -/** - * BitMap接口,用于将某个int或long值映射到一个数组中,从而判定某个值是否存在 - * - * @author looly - * - */ -public interface BitMap{ - - int MACHINE32 = 32; - int MACHINE64 = 64; - - /** - * 加入值 - * - * @param i 值 - */ - void add(long i); - - /** - * 检查是否包含值 - * - * @param i 值 - * @return 是否包含 - */ - boolean contains(long i); - - /** - * 移除值 - * - * @param i 值 - */ - void remove(long i); -} diff --git a/hutool-core/src/main/java/cn/hutool/core/map/bitMap/IntMap.java b/hutool-core/src/main/java/cn/hutool/core/map/bitMap/IntMap.java deleted file mode 100755 index 01122f5b4..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/map/bitMap/IntMap.java +++ /dev/null @@ -1,53 +0,0 @@ -package cn.hutool.core.map.bitMap; - -import java.io.Serializable; - -/** - * 过滤器BitMap在32位机器上.这个类能发生更好的效果.一般情况下建议使用此类 - * - * @author loolly - * - */ -public class IntMap implements BitMap, Serializable { - private static final long serialVersionUID = 1L; - - private final int[] ints; - - /** - * 构造 - */ - public IntMap() { - ints = new int[93750000]; - } - - /** - * 构造 - * - * @param size 容量 - */ - public IntMap(int size) { - ints = new int[size]; - } - - @Override - public void add(long i) { - int r = (int) (i / BitMap.MACHINE32); - int c = (int) (i & (BitMap.MACHINE32 - 1)); - ints[r] = ints[r] | (1 << c); - } - - @Override - public boolean contains(long i) { - int r = (int) (i / BitMap.MACHINE32); - int c = (int) (i & (BitMap.MACHINE32 - 1)); - return ((ints[r] >>> c) & 1) == 1; - } - - @Override - public void remove(long i) { - int r = (int) (i / BitMap.MACHINE32); - int c = (int) (i & (BitMap.MACHINE32 - 1)); - ints[r] &= ~(1 << c); - } - -} diff --git a/hutool-core/src/main/java/cn/hutool/core/map/bitMap/LongMap.java b/hutool-core/src/main/java/cn/hutool/core/map/bitMap/LongMap.java deleted file mode 100755 index 326df5e0e..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/map/bitMap/LongMap.java +++ /dev/null @@ -1,53 +0,0 @@ -package cn.hutool.core.map.bitMap; - -import java.io.Serializable; - -/** - * 过滤器BitMap在64位机器上.这个类能发生更好的效果.一般机器不建议使用 - * - * @author loolly - * - */ -public class LongMap implements BitMap, Serializable { - private static final long serialVersionUID = 1L; - - private final long[] longs; - - /** - * 构造 - */ - public LongMap() { - longs = new long[93750000]; - } - - /** - * 构造 - * - * @param size 容量 - */ - public LongMap(int size) { - longs = new long[size]; - } - - @Override - public void add(long i) { - int r = (int) (i / BitMap.MACHINE64); - long c = i & (BitMap.MACHINE64 - 1); - longs[r] = longs[r] | (1L << c); - } - - @Override - public boolean contains(long i) { - int r = (int) (i / BitMap.MACHINE64); - long c = i & (BitMap.MACHINE64 - 1); - return ((longs[r] >>> c) & 1) == 1; - } - - @Override - public void remove(long i) { - int r = (int) (i / BitMap.MACHINE64); - long c = i & (BitMap.MACHINE64 - 1); - longs[r] &= ~(1L << c); - } - -} diff --git a/hutool-core/src/main/java/cn/hutool/core/map/bitMap/package-info.java b/hutool-core/src/main/java/cn/hutool/core/map/bitMap/package-info.java deleted file mode 100755 index 6b9ca7659..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/map/bitMap/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -/** - * BitMap实现 - * - * @author looly - * - */ -package cn.hutool.core.map.bitMap; diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/AbstractFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/AbstractFilter.java new file mode 100644 index 000000000..f559d4b41 --- /dev/null +++ b/hutool-core/src/main/java/cn/hutool/core/text/bloom/AbstractFilter.java @@ -0,0 +1,50 @@ +package cn.hutool.core.text.bloom; + +import java.util.BitSet; + +/** + * 抽象Bloom过滤器 + * + * @author looly + */ +public abstract class AbstractFilter implements BloomFilter { + private static final long serialVersionUID = 1L; + + private final BitSet bitSet; + protected int size; + + + /** + * 构造 + * + * @param size 容量 + */ + public AbstractFilter(int size) { + this.size = size; + this.bitSet = new BitSet(size); + } + + @Override + public boolean contains(String str) { + return bitSet.get(Math.abs(hash(str))); + } + + @Override + public boolean add(String str) { + final int hash = Math.abs(hash(str)); + if (bitSet.get(hash)) { + return false; + } + + bitSet.set(hash); + return true; + } + + /** + * 自定义Hash方法 + * + * @param str 字符串 + * @return HashCode + */ + public abstract int hash(String str); +} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/BitMapBloomFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/BitMapBloomFilter.java deleted file mode 100644 index c873d546d..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/BitMapBloomFilter.java +++ /dev/null @@ -1,82 +0,0 @@ -package cn.hutool.core.text.bloom; - -import cn.hutool.core.text.bloom.filter.DefaultFilter; -import cn.hutool.core.text.bloom.filter.ELFFilter; -import cn.hutool.core.text.bloom.filter.JSFilter; -import cn.hutool.core.text.bloom.filter.PJWFilter; -import cn.hutool.core.text.bloom.filter.SDBMFilter; -import cn.hutool.core.util.NumberUtil; - -/** - * BlommFilter 实现
- * 1.构建hash算法
- * 2.散列hash映射到数组的bit位置
- * 3.验证
- * 此实现方式可以指定Hash算法 - * - * @author Ansj - */ -public class BitMapBloomFilter implements BloomFilter { - private static final long serialVersionUID = 1L; - - private BloomFilter[] filters; - - /** - * 构造,使用默认的5个过滤器 - * - * @param m M值决定BitMap的大小 - */ - public BitMapBloomFilter(int m) { - long mNum = NumberUtil.div(String.valueOf(m), String.valueOf(5)).longValue(); - long size = mNum * 1024 * 1024 * 8; - - filters = new BloomFilter[]{ - new DefaultFilter(size), - new ELFFilter(size), - new JSFilter(size), - new PJWFilter(size), - new SDBMFilter(size) - }; - } - - /** - * 使用自定的多个过滤器建立BloomFilter - * - * @param m M值决定BitMap的大小 - * @param filters Bloom过滤器列表 - */ - public BitMapBloomFilter(int m, BloomFilter... filters) { - this(m); - this.filters = filters; - } - - /** - * 增加字符串到Filter映射中 - * - * @param str 字符串 - */ - @Override - public boolean add(String str) { - boolean flag = false; - for (BloomFilter filter : filters) { - flag |= filter.add(str); - } - return flag; - } - - /** - * 是否可能包含此字符串,此处存在误判 - * - * @param str 字符串 - * @return 是否存在 - */ - @Override - public boolean contains(String str) { - for (BloomFilter filter : filters) { - if (filter.contains(str) == false) { - return false; - } - } - return true; - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/BitSetBloomFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/BitSetBloomFilter.java deleted file mode 100644 index c2600dad4..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/BitSetBloomFilter.java +++ /dev/null @@ -1,149 +0,0 @@ -package cn.hutool.core.text.bloom; - -import cn.hutool.core.io.FileUtil; -import cn.hutool.core.io.IoUtil; -import cn.hutool.core.lang.hash.HashUtil; - -import java.io.BufferedReader; -import java.io.IOException; -import java.nio.charset.Charset; -import java.util.BitSet; - -/** - * BloomFilter实现方式2,此方式使用BitSet存储。
- * Hash算法的使用使用固定顺序,只需指定个数即可 - * - * @author loolly - */ -public class BitSetBloomFilter implements BloomFilter { - private static final long serialVersionUID = 1L; - - private final BitSet bitSet; - private final int bitSetSize; - private final int addedElements; - private final int hashFunctionNumber; - - /** - * 构造一个布隆过滤器,过滤器的容量为c * n 个bit. - * - * @param c 当前过滤器预先开辟的最大包含记录,通常要比预计存入的记录多一倍. - * @param n 当前过滤器预计所要包含的记录. - * @param k 哈希函数的个数,等同每条记录要占用的bit数. - */ - public BitSetBloomFilter(int c, int n, int k) { - this.hashFunctionNumber = k; - this.bitSetSize = (int) Math.ceil(c * k); - this.addedElements = n; - this.bitSet = new BitSet(this.bitSetSize); - } - - /** - * 通过文件初始化过滤器. - * - * @param path 文件路径 - * @param charset 字符集 - * @throws IOException IO异常 - * @since 5.8.0 - */ - public void init(String path, Charset charset) throws IOException { - BufferedReader reader = FileUtil.getReader(path, charset); - try { - String line; - while (true) { - line = reader.readLine(); - if (line == null) { - break; - } - this.add(line); - } - } finally { - IoUtil.close(reader); - } - } - - @Override - public boolean add(String str) { - if (contains(str)) { - return false; - } - - int[] positions = createHashes(str, hashFunctionNumber); - for (int value : positions) { - int position = Math.abs(value % bitSetSize); - bitSet.set(position, true); - } - return true; - } - - /** - * 判定是否包含指定字符串 - * - * @param str 字符串 - * @return 是否包含,存在误差 - */ - @Override - public boolean contains(String str) { - int[] positions = createHashes(str, hashFunctionNumber); - for (int i : positions) { - int position = Math.abs(i % bitSetSize); - if (!bitSet.get(position)) { - return false; - } - } - return true; - } - - /** - * @return 得到当前过滤器的错误率. - */ - public double getFalsePositiveProbability() { - // (1 - e^(-k * n / m)) ^ k - return Math.pow((1 - Math.exp(-hashFunctionNumber * (double) addedElements / bitSetSize)), hashFunctionNumber); - } - - /** - * 将字符串的字节表示进行多哈希编码. - * - * @param str 待添加进过滤器的字符串字节表示. - * @param hashNumber 要经过的哈希个数. - * @return 各个哈希的结果数组. - */ - public static int[] createHashes(String str, int hashNumber) { - int[] result = new int[hashNumber]; - for (int i = 0; i < hashNumber; i++) { - result[i] = hash(str, i); - - } - return result; - } - - /** - * 计算Hash值 - * - * @param str 被计算Hash的字符串 - * @param k Hash算法序号 - * @return Hash值 - */ - public static int hash(String str, int k) { - switch (k) { - case 0: - return HashUtil.rsHash(str); - case 1: - return HashUtil.jsHash(str); - case 2: - return HashUtil.elfHash(str); - case 3: - return HashUtil.bkdrHash(str); - case 4: - return HashUtil.apHash(str); - case 5: - return HashUtil.djbHash(str); - case 6: - return HashUtil.sdbmHash(str); - case 7: - return HashUtil.pjwHash(str); - default: - return 0; - } - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/BloomFilterUtil.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/BloomFilterUtil.java deleted file mode 100644 index a83893126..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/BloomFilterUtil.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.hutool.core.text.bloom; - -/** - * 布隆过滤器工具 - * - * @author looly - * @since 4.1.5 - */ -public class BloomFilterUtil { - - /** - * 创建一个BitSet实现的布隆过滤器,过滤器的容量为c * n 个bit. - * - * @param c 当前过滤器预先开辟的最大包含记录,通常要比预计存入的记录多一倍. - * @param n 当前过滤器预计所要包含的记录. - * @param k 哈希函数的个数,等同每条记录要占用的bit数. - * @return BitSetBloomFilter - */ - public static BitSetBloomFilter createBitSet(int c, int n, int k) { - return new BitSetBloomFilter(c, n, k); - } - - /** - * 创建BitMap实现的布隆过滤器 - * - * @param m BitMap的大小 - * @return BitMapBloomFilter - */ - public static BitMapBloomFilter createBitMap(int m) { - return new BitMapBloomFilter(m); - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/CombinedBloomFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/CombinedBloomFilter.java new file mode 100644 index 000000000..4c7842bfa --- /dev/null +++ b/hutool-core/src/main/java/cn/hutool/core/text/bloom/CombinedBloomFilter.java @@ -0,0 +1,55 @@ +package cn.hutool.core.text.bloom; + +/** + * 组合BloomFilter 实现
+ * 1.构建hash算法
+ * 2.散列hash映射到数组的bit位置
+ * 3.验证
+ * 此实现方式可以指定Hash算法 + * + * @author Ansj + */ +public class CombinedBloomFilter implements BloomFilter { + private static final long serialVersionUID = 1L; + + private final BloomFilter[] filters; + + /** + * 使用自定的多个过滤器建立BloomFilter + * + * @param filters Bloom过滤器列表 + */ + public CombinedBloomFilter(BloomFilter... filters) { + this.filters = filters; + } + + /** + * 增加字符串到Filter映射中 + * + * @param str 字符串 + */ + @Override + public boolean add(String str) { + boolean flag = false; + for (BloomFilter filter : filters) { + flag |= filter.add(str); + } + return flag; + } + + /** + * 是否可能包含此字符串,此处存在误判 + * + * @param str 字符串 + * @return 是否存在 + */ + @Override + public boolean contains(String str) { + for (BloomFilter filter : filters) { + if (filter.contains(str) == false) { + return false; + } + } + return true; + } +} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/FuncFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/FuncFilter.java new file mode 100644 index 000000000..ff0c4069a --- /dev/null +++ b/hutool-core/src/main/java/cn/hutool/core/text/bloom/FuncFilter.java @@ -0,0 +1,29 @@ +package cn.hutool.core.text.bloom; + +import java.util.function.Function; + +/** + * 基于Hash函数方法的{@link BloomFilter} + * + * @author looly + * @since 5.8.0 + */ +public class FuncFilter extends AbstractFilter { + private static final long serialVersionUID = 1L; + + private final Function hashFunc; + + /** + * @param size 最大值 + * @param hashFunc Hash函数 + */ + public FuncFilter(int size, Function hashFunc) { + super(size); + this.hashFunc = hashFunc; + } + + @Override + public int hash(String str) { + return hashFunc.apply(str).intValue() % size; + } +} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/AbstractFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/AbstractFilter.java deleted file mode 100644 index 2df633569..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/AbstractFilter.java +++ /dev/null @@ -1,85 +0,0 @@ -package cn.hutool.core.text.bloom.filter; - -import cn.hutool.core.map.bitMap.BitMap; -import cn.hutool.core.map.bitMap.IntMap; -import cn.hutool.core.map.bitMap.LongMap; -import cn.hutool.core.text.bloom.BloomFilter; - -/** - * 抽象Bloom过滤器 - * - * @author loolly - * - */ -public abstract class AbstractFilter implements BloomFilter { - private static final long serialVersionUID = 1L; - - protected static int DEFAULT_MACHINE_NUM = BitMap.MACHINE32; - - private BitMap bm = null; - - protected long size; - - /** - * 构造 - * - * @param maxValue 最大值 - * @param machineNum 机器位数 - */ - public AbstractFilter(long maxValue, int machineNum) { - init(maxValue, machineNum); - } - - /** - * 构造32位 - * - * @param maxValue 最大值 - */ - public AbstractFilter(long maxValue) { - this(maxValue, DEFAULT_MACHINE_NUM); - } - - /** - * 初始化 - * - * @param maxValue 最大值 - * @param machineNum 机器位数 - */ - public void init(long maxValue, int machineNum) { - this.size = maxValue; - switch (machineNum) { - case BitMap.MACHINE32: - bm = new IntMap((int) (size / machineNum)); - break; - case BitMap.MACHINE64: - bm = new LongMap((int) (size / machineNum)); - break; - default: - throw new RuntimeException("Error Machine number!"); - } - } - - @Override - public boolean contains(String str) { - return bm.contains(Math.abs(hash(str))); - } - - @Override - public boolean add(String str) { - final long hash = Math.abs(hash(str)); - if (bm.contains(hash)) { - return false; - } - - bm.add(hash); - return true; - } - - /** - * 自定义Hash方法 - * - * @param str 字符串 - * @return HashCode - */ - public abstract long hash(String str); -} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/DefaultFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/DefaultFilter.java deleted file mode 100644 index 0dbe05e84..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/DefaultFilter.java +++ /dev/null @@ -1,20 +0,0 @@ -package cn.hutool.core.text.bloom.filter; - -import cn.hutool.core.lang.hash.HashUtil; - -/** - * 默认Bloom过滤器,使用Java自带的Hash算法 - * - * @author loolly - */ -public class DefaultFilter extends FuncFilter { - private static final long serialVersionUID = 1L; - - public DefaultFilter(long maxValue) { - this(maxValue, DEFAULT_MACHINE_NUM); - } - - public DefaultFilter(long maxValue, int machineNumber) { - super(maxValue, machineNumber, HashUtil::javaDefaultHash); - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/ELFFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/ELFFilter.java deleted file mode 100644 index b1acb09bb..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/ELFFilter.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.hutool.core.text.bloom.filter; - -import cn.hutool.core.lang.hash.HashUtil; - -public class ELFFilter extends FuncFilter { - private static final long serialVersionUID = 1L; - - public ELFFilter(long maxValue) { - this(maxValue, DEFAULT_MACHINE_NUM); - } - - public ELFFilter(long maxValue, int machineNumber) { - super(maxValue, machineNumber, HashUtil::elfHash); - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/FNVFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/FNVFilter.java deleted file mode 100644 index 1d1bb2beb..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/FNVFilter.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.hutool.core.text.bloom.filter; - -import cn.hutool.core.lang.hash.HashUtil; - -public class FNVFilter extends FuncFilter { - private static final long serialVersionUID = 1L; - - public FNVFilter(long maxValue) { - this(maxValue, DEFAULT_MACHINE_NUM); - } - - public FNVFilter(long maxValue, int machineNum) { - super(maxValue, machineNum, HashUtil::fnvHash); - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/FuncFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/FuncFilter.java deleted file mode 100644 index 0f3feca65..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/FuncFilter.java +++ /dev/null @@ -1,42 +0,0 @@ -package cn.hutool.core.text.bloom.filter; - -import cn.hutool.core.text.bloom.BloomFilter; - -import java.util.function.Function; - -/** - * 基于Hash函数方法的{@link BloomFilter} - * - * @author looly - * @since 5.8.0 - */ -public class FuncFilter extends AbstractFilter { - private static final long serialVersionUID = 1L; - - private final Function hashFunc; - - /** - * 构造 - * - * @param maxValue 最大值 - * @param hashFunc Hash函数 - */ - public FuncFilter(long maxValue, Function hashFunc) { - this(maxValue, DEFAULT_MACHINE_NUM, hashFunc); - } - - /** - * @param maxValue 最大值 - * @param machineNum 机器位数 - * @param hashFunc Hash函数 - */ - public FuncFilter(long maxValue, int machineNum, Function hashFunc) { - super(maxValue, machineNum); - this.hashFunc = hashFunc; - } - - @Override - public long hash(String str) { - return hashFunc.apply(str).longValue() % size; - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/HfFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/HfFilter.java deleted file mode 100644 index d529fe47e..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/HfFilter.java +++ /dev/null @@ -1,16 +0,0 @@ -package cn.hutool.core.text.bloom.filter; - - -import cn.hutool.core.lang.hash.HashUtil; - -public class HfFilter extends FuncFilter { - private static final long serialVersionUID = 1L; - - public HfFilter(long maxValue) { - this(maxValue, DEFAULT_MACHINE_NUM); - } - - public HfFilter(long maxValue, int machineNum) { - super(maxValue, machineNum, HashUtil::hfHash); - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/HfIpFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/HfIpFilter.java deleted file mode 100644 index d0f8fad8c..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/HfIpFilter.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.hutool.core.text.bloom.filter; - -import cn.hutool.core.lang.hash.HashUtil; - -public class HfIpFilter extends FuncFilter { - private static final long serialVersionUID = 1L; - - public HfIpFilter(long maxValue) { - this(maxValue, DEFAULT_MACHINE_NUM); - } - - public HfIpFilter(long maxValue, int machineNum) { - super(maxValue, machineNum, HashUtil::hfIpHash); - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/JSFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/JSFilter.java deleted file mode 100644 index 611fdb67e..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/JSFilter.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.hutool.core.text.bloom.filter; - -import cn.hutool.core.lang.hash.HashUtil; - -public class JSFilter extends FuncFilter { - private static final long serialVersionUID = 1L; - - public JSFilter(long maxValue) { - this(maxValue, DEFAULT_MACHINE_NUM); - } - - public JSFilter(long maxValue, int machineNum) { - super(maxValue, machineNum, HashUtil::jsHash); - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/PJWFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/PJWFilter.java deleted file mode 100644 index 73eaecec7..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/PJWFilter.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.hutool.core.text.bloom.filter; - -import cn.hutool.core.lang.hash.HashUtil; - -public class PJWFilter extends FuncFilter { - private static final long serialVersionUID = 1L; - - public PJWFilter(long maxValue) { - this(maxValue, DEFAULT_MACHINE_NUM); - } - - public PJWFilter(long maxValue, int machineNum) { - super(maxValue, machineNum, HashUtil::pjwHash); - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/RSFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/RSFilter.java deleted file mode 100644 index a03a3a3ce..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/RSFilter.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.hutool.core.text.bloom.filter; - -import cn.hutool.core.lang.hash.HashUtil; - -public class RSFilter extends FuncFilter { - private static final long serialVersionUID = 1L; - - public RSFilter(long maxValue) { - this(maxValue, DEFAULT_MACHINE_NUM); - } - - public RSFilter(long maxValue, int machineNum) { - super(maxValue, machineNum, HashUtil::rsHash); - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/SDBMFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/SDBMFilter.java deleted file mode 100644 index 953bad701..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/SDBMFilter.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.hutool.core.text.bloom.filter; - -import cn.hutool.core.lang.hash.HashUtil; - -public class SDBMFilter extends FuncFilter { - private static final long serialVersionUID = 1L; - - public SDBMFilter(long maxValue) { - this(maxValue, DEFAULT_MACHINE_NUM); - } - - public SDBMFilter(long maxValue, int machineNum) { - super(maxValue, machineNum, HashUtil::sdbmHash); - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/TianlFilter.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/TianlFilter.java deleted file mode 100644 index 0b5b4cafc..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/TianlFilter.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.hutool.core.text.bloom.filter; - -import cn.hutool.core.lang.hash.HashUtil; - -public class TianlFilter extends FuncFilter { - private static final long serialVersionUID = 1L; - - public TianlFilter(long maxValue) { - this(maxValue, DEFAULT_MACHINE_NUM); - } - - public TianlFilter(long maxValue, int machineNum) { - super(maxValue, machineNum, HashUtil::tianlHash); - } -} diff --git a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/package-info.java b/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/package-info.java deleted file mode 100644 index 2de943992..000000000 --- a/hutool-core/src/main/java/cn/hutool/core/text/bloom/filter/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -/** - * 各种Hash算法的过滤器实现 - * - * @author looly - * - */ -package cn.hutool.core.text.bloom.filter; diff --git a/hutool-core/src/test/java/cn/hutool/core/text/bloom/BitMapBloomFilterTest.java b/hutool-core/src/test/java/cn/hutool/core/text/bloom/BitMapBloomFilterTest.java index 9a7ea7716..e85190c53 100644 --- a/hutool-core/src/test/java/cn/hutool/core/text/bloom/BitMapBloomFilterTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/text/bloom/BitMapBloomFilterTest.java @@ -10,7 +10,7 @@ public class BitMapBloomFilterTest { @Test public void filterTest() { - BitMapBloomFilter filter = new BitMapBloomFilter(10); + CombinedBloomFilter filter = new CombinedBloomFilter(10); filter.add("123"); filter.add("abc"); filter.add("ddd");