zoukankan      html  css  js  c++  java
  • 谷歌Guava工具类的使用(1):BloomFilter的使用

    具体代码实现如下所示:

    // 创建布隆过滤器,设置存储的数据类型,预期数据量,误判率 (必须大于0,小于1)
    int insertions = 10000000;
    double fpp = 0.0001;
    BloomFilter<String> bloomFilter = BloomFilter.create(Funnels.stringFunnel(Charset.defaultCharset()), insertions, fpp);
    
    // 随机生成数据,并添加到布隆过滤器中(将预期数据量全部塞满)
    // 同时也创建一个List集合,将布隆过滤器中预期数据的十分之一存储到该List中
    List<String> lists_1 = new ArrayList<String>();
    for (int i = 0; i < insertions; i++) {
        String uid = UUID.randomUUID().toString();
        bloomFilter.put(uid);
        if (i < insertions / 10) {
            lists_1.add(uid);
        }
    }
    
    // 再创建一个List集合,用来存储另外 五分之一 不存在布隆过滤器中的数据
    List<String> lists_2 = new ArrayList<String>();
    for (int i = 0; i < insertions / 5; i++) {
        String uid = UUID.randomUUID().toString();
        lists_2.add(uid);
    }
    
    // 对已存在布隆过滤器中的lists_1中的数据进行判断,看是否在布隆过滤器中
    int result_1 = 0;
    for (String s : lists_1) {
        if (bloomFilter.mightContain(s)) result_1++;
    }
    System.out.println("在 <已存在> 布隆过滤器中的" + lists_1.size() + "条数据中,布隆过滤器认为存在的数量为:" + result_1);
    
    // 对不存在布隆过滤器中的lists_2中的数据进行判断,看是否在布隆过滤器中
    int result_2 = 0;
    for (String s : lists_2) {
        if (bloomFilter.mightContain(s)) result_2++;
    }
    System.out.println("在 <不存在> 布隆过滤器中的" + lists_2.size() + "条数据中,布隆过滤器认为存在的数量为:" + result_2);
    
    // 对数据进行整除,求出百分率
    NumberFormat percentFormat = NumberFormat.getPercentInstance();
    percentFormat.setMaximumFractionDigits(2);
    float percent = (float) result_1 / lists_1.size();
    float bingo = (float) result_2 / lists_2.size();
    System.out.println("命中率为:" + percentFormat.format(percent) + ",误判率为:" + percentFormat.format(bingo));
  • 相关阅读:
    无法在 Web 服务器上启动调试。调试失败,因为没有启用集成 Windows 身份验证。请
    .NET连接各种数据库的字符串
    修改远程桌面端口
    c#获取计算机信息
    ASP.NET 对路径的访问被拒绝
    关于.net 2.0数据库连接出错的一些经验
    Rose启动提示"java.lang.ClassNotFoundException"的解决
    Ext中的get、getDom、getCmp、getBody、getDoc的区别
    action中生成验证码图片
    extjs表格控件
  • 原文地址:https://www.cnblogs.com/yangshibiao/p/14133462.html
Copyright © 2011-2022 走看看