当前位置: 首页 > news >正文

Java实现基于bitmap的字符串去重统计

字符串与整数不同,不能直接用位图表示。本文介绍两种基于bitmap思想的字符串去重统计方法:布隆过滤器和哈希映射法。

## 方法一:布隆过滤器(Bloom Filter)

布隆过滤器是bitmap的扩展应用,它使用多个哈希函数,将每个字符串映射到bitmap的多个位置上。

```java
import java.util.BitSet;
import java.util.function.Function;

public class BloomFilter {
    private BitSet bitmap;
    private int numBits;
    private int numHashes; // 哈希函数数量
    
    // 使用不同的种子计算哈希
    private int hash(String str, int seed) {
        int h = str.hashCode();
        // 使用简单的混合函数与seed结合
        return Math.abs((h ^ seed) % numBits);
    }
    
    public BloomFilter(int size, int hashes) {
        this.numBits = size;
        this.numHashes = hashes;
        this.bitmap = new BitSet(size);
    }
    
    // 将字符串添加到过滤器
    public void add(String str) {
        for (int i = 0; i < numHashes; i++) {
            int pos = hash(str, i);
            bitmap.set(pos);
        }
    }
    
    // 检查字符串是否可能在集合中
    // 返回false表示一定不在,返回true表示可能在
    public boolean mayContain(String str) {
        for (int i = 0; i < numHashes; i++) {
            int pos = hash(str, i);
            if (!bitmap.get(pos)) {
                return false; // 如果有任一位为0,则字符串一定不在集合中
            }
        }
        return true; // 所有位都为1,字符串可能在集合中
    }
    
    // 估计集合中元素数量
    // m = 位数,k = 哈希函数数量,X &

相关文章:

  • Pycharm-jupyternotebook不渲染
  • 工作流引擎-01-Activiti 是领先的轻量级、以 Java 为中心的开源 BPMN 引擎,支持现实世界的流程自动化需求
  • spark-shuffle 类型及其对比
  • Spring AI实现一个简单的问答系统
  • Java程序员从0学AI(二)
  • C# 使用 OpenCV 基础
  • spark调度系统核心组件SparkContext、DAGSchedul、TaskScheduler介绍
  • 【Fifty Project - D29】
  • 容器环境渗透测试工具(docker渗透测试工具、kubernetes)
  • 在CuPy中使用多节点多GPU环境
  • 2025年医美行业报告60+份汇总解读 | 附 PDF 下载
  • Golang的代码注释规范与实践
  • 【笔试强训day37】
  • 从 0 到 1 选对 AI 自动化平台,深度对比三大AI自动化平台:n8n vs Dify vs Coze(附选型指南与实战案例)
  • 简易的Java制作的c4爆炸倒计时程序
  • 时源芯微|接口滤波与防护电路的设计
  • 【课堂笔记】核方法和Mercer定理
  • 打造高效数据处理利器:用Python实现Excel文件智能合并工具
  • Java EE进阶1:导读
  • 科技赋能·长效治理|无忧树建筑修缮渗漏水长效治理交流会圆满举行!
  • 上海合作组织减贫和可持续发展论坛开幕,沈跃跃宣读习近平主席贺信
  • 家国万里·时光故事会|从徐光启到徐家汇,一颗甘薯里的家国
  • 专家:炎症性肠病发病率上升,需加强疾病早期诊断
  • 欧洲观察室|欧盟对华战略或在中欧建交50年时“低开高走”
  • 聚焦智能浪潮下的创业突围,“青年草坪创新创业湃对”走进北杨人工智能小镇
  • 广东茂名高州市山体滑坡已致3死1失联,搜救仍在继续