java简单实现布隆过滤器

发布时间 2023-05-31 11:38:16作者: 猥琐熊花子酱

为了方便理解布隆过滤器,java简单实现了下,
特点:仅用做一次运算就可以判断存在不存在,但是只能精确的判断值不存在,不能精确的判断值存在

public class BlTest {
    private final int f = 1024; // 负载因子,值越大判断的越精准,但是所占的空间也越大
    int[] bArray;
    BlTest(){
        this.bArray=new int[f];
    }
    void addKey(String s){
        int i = s.hashCode() % f;// 不同字符串取模后的值可能相同,所以会存在哈希碰撞。
        if(bArray[i]!=1){
            bArray[i]=1;
        }
    }
    boolean exists(String s){
        return bArray[s.hashCode() % f]==1;
    }
    public static void main(String[] args) {
        BlTest blTest = new BlTest();
        blTest.addKey("ddd");
        blTest.addKey("ccc");
        System.out.println(blTest.exists("aaa"));
        System.out.println(blTest.exists("ddd"));
        System.out.println(blTest.exists("ccc"));
    }

}