Java版本的BloomFilter (布隆过滤器)

哈哈...我终于写了个BloomFilter

这个是干嘛用的???


恩...一般比较常见的应用是字符串去重..也就是...恩..就是采集网址去重.防止重复采集

下面是我自己写的个例子


BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\Users\\caiqing\\workspace\\CQ\\library\\dictionary-utf8.TXT"),"UTF-8")) ;
String str = null ;
System.out.println("begin");
long start = System.currentTimeMillis() ;
while((str=br.readLine())!=null){
if(bf.containsAndAdd(str)){
System.out.println("containsAndAdd:"+str);
}
}

br.close() ;

br = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\Users\\caiqing\\workspace\\CQ\\library\\dictionary-utf8.TXT"),"UTF-8")) ;
System.out.println("begin-find");
start = System.currentTimeMillis() ;
while((str=br.readLine())!=null){
if(!bf.contains(str)){
System.out.println("contains:"+str);
}
}

System.out.println(System.currentTimeMillis()-start);
br.close() ;



对分词词典79962个词进行插入.和查重..准确率100%.算上IO时间耗时79毫秒...

源码我放到下面了大家可以下载..还有..要的人给个评论吧..我的博客好冷清啊


今天回来用我的过滤器做了个测试哎...效果不是很理想啊..在千万级数据还行.再大就不好办啦


重新抄袭了一些经典的算法...(哎中科院老师的算法有毛病有三个Hash算法都是白给的.也许是我从c转到java没写对吧..) 现在效率1亿..64m内存大约失误率是0.0013 12m的失误个数是44..另外我吧能加的hash都加上了.这里只测试了5个..哈哈
我很满意非常满意....请大家敬请下载吧


10000000
32m:0
64m:0
128m:0

100000000
64m:146546
128m:44
256m:0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值