首页 > 编程语言 >java简单实现布隆过滤器

java简单实现布隆过滤器

时间:2023-05-31 11:46:38浏览次数:45  
标签:bArray java exists int 布隆 System blTest 过滤器 BlTest

为了方便理解布隆过滤器,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"));
    }

}

标签:bArray,java,exists,int,布隆,System,blTest,过滤器,BlTest
From: https://www.cnblogs.com/AngeLeyes/p/17445652.html

相关文章

  • Java大文件分片上传/多线程上传解决方案
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1.通过form表单向后端发送请求         <formid="postForm"action="${pageContext.request.contextPath}/UploadServlet"method="post"e......
  • java面试题
    一、面向对象的特性有哪些?封装(Encapsulation):将数据和方法封装在一个类中,通过访问修饰符控制数据的访问权限,提高程序的安全性和可维护性。继承(Inheritance):可以从父类继承属性和方法,避免重复编写代码,简化程序设计和维护。多态(Polymorphism):同一种类型的对象,可以以不同的方式......
  • java轻型内存队列处理demo
    java轻型内存队列处理demo@ComponentpublicclassConcurrentLinkedQueueUtils{staticAtpLogBizatpLogBiz;staticAuditLogtTmpDataServiceauditLogDataService;staticConcurrentLinkedQueueconList=newConcurrentLinkedQueue();privatestaticvo......
  • java中属性和局部变量的作用域
    1.类中的属性和局部变量可以重名,访问时遵循就近原则2.在同一个作用域中({}大括号括起来的),如在一个成员方法中,两个局部变量不能重名3.属性的生命周期长,随着对象的创建而创建,随着对象的销毁而销毁;局部变量的生命周期短,随着它所属的代码块执行而创建,随着代码快的结束而销毁。......
  • java同步mysql的数据到PostgreSQL时报错ERROR: invalid byte sequence for encoding "
    最近,同事在做一个功能,通过java程序将mysql中的一张表的数据同步到pgsql中,在同步过程中,插入到pgsql中出现了如下错误:`###Errorupdatingdatabase.Cause:org.postgresql.util.PSQLException:ERROR:invalidbytesequenceforencoding"UTF8":0x00在位置:unnamedportalpa......
  • java modbus_rtu串口通讯
    基于modbus和串口通讯的Java分享本文推荐一个简单好用java实现基于modbus—rtu协议通讯方法:如果采用非标准modbus协议通讯,可以查看我的这篇博文:java实现串口通讯关于modbus的java开源库主要有以下四种:Jamod:JavaModbus实现:JavaModbus库。该库由DieterWimberger实施。Mod......
  • Java 删除某个目录下面所有的文件
    Java删除某个目录下面所有的文件 FilecodeDir=newFile("C:\\111111");deleteContents(codeDir);//删除111111目录下面所有内容,但不删除111111这个目录deleteContentsAndDir(codeDir);//删除111111目录下面所有内容,最后将111111这个......
  • java开发jwt示例
    pom文件引入<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.15.1</version></dependency>......
  • Java中泛型详解,非常详细
    前言在前面的几篇文章中,详细地给大家介绍了Java里的集合。但在介绍集合时,我们涉及到了泛型的概念却并没有详细学习,所以今天我们要花点时间给大家专门讲解什么是泛型、泛型的作用、用法、特点等内容。有些粉丝朋友,在之前就一直很好奇,比如List<String>中的<String>部分到底......
  • java实现泛型加法
    之前实践中实现数据的加法,很繁琐,比如下面,每一种类型都要写一遍,能不能用泛型方法实现呢?publicLonggetSum(Long...args){longinit=0L;for(Longarg:args){if(arg==null){arg=0L;}ini......