bloomFilter
来源:互联网 发布:端口只亮黄灯正常吗 编辑:程序博客网 时间:2024/05/22 06:27
//创建bloomFilter类
public class bloomFilter {
private static final int DEFAULT_SIZE =10 << 24 ;
//获取输入值的要比较的字符位置
private static final int [] seeds =new int []{1,4,7,10,12 ,14,16};
//设置bits存储空间大小
private BitSet bits= new BitSet(DEFAULT_SIZE);
private SimpleHash[] func=new SimpleHash[seeds.length];
public bloomFilter() {
for( int i= 0 ; i< seeds.length; i ++ ) {
func[i]=new SimpleHash(DEFAULT_SIZE, seeds[i]);
}
}
//往bits中添加
public void add(String value) {
for(SimpleHash f : func) {
bits.set(f.hash(value), true );
}
}
//判断是否有已有value的标记
public boolean contains(String value) {
if(value ==null ) {
return false ;
}
boolean ret = true ;
for(SimpleHash f : func) {
//get Hash的方法返回的总数查看是否为true
ret=ret&& bits.get(f.hash(value));
}
return ret;
}
//内部类,simpleHash
public static class SimpleHash {
private int cap;
private int seed;
public SimpleHash( int cap, int seed) {
this.cap= cap;
this.seed =seed;
}
//公共方法(根据带入的seed,循环带入值的len,最后得到总和返回。)
public int hash(String value) {
int result=0 ;
int len= value.length();
for (int i= 0 ; i< len; i ++ ) {
result =seed* result + value.charAt(i);
}
return (cap - 1 ) & result;
}
}
public static void main(String[] args) {
bloomFilter filter=new bloomFilter();
String values = "stone2083@yahoo.cn,baidu@dd.cn" ;
for(String value:values.split(",")){
System.out.println(filter.contains(value));
filter.add(value);
System.out.println(filter.contains(value));
}
}
}
public class bloomFilter {
private static final int DEFAULT_SIZE =10 << 24 ;
//获取输入值的要比较的字符位置
private static final int [] seeds =new int []{1,4,7,10,12 ,14,16};
//设置bits存储空间大小
private BitSet bits= new BitSet(DEFAULT_SIZE);
private SimpleHash[] func=new SimpleHash[seeds.length];
public bloomFilter() {
for( int i= 0 ; i< seeds.length; i ++ ) {
func[i]=new SimpleHash(DEFAULT_SIZE, seeds[i]);
}
}
//往bits中添加
public void add(String value) {
for(SimpleHash f : func) {
bits.set(f.hash(value), true );
}
}
//判断是否有已有value的标记
public boolean contains(String value) {
if(value ==null ) {
return false ;
}
boolean ret = true ;
for(SimpleHash f : func) {
//get Hash的方法返回的总数查看是否为true
ret=ret&& bits.get(f.hash(value));
}
return ret;
}
//内部类,simpleHash
public static class SimpleHash {
private int cap;
private int seed;
public SimpleHash( int cap, int seed) {
this.cap= cap;
this.seed =seed;
}
//公共方法(根据带入的seed,循环带入值的len,最后得到总和返回。)
public int hash(String value) {
int result=0 ;
int len= value.length();
for (int i= 0 ; i< len; i ++ ) {
result =seed* result + value.charAt(i);
}
return (cap - 1 ) & result;
}
}
public static void main(String[] args) {
bloomFilter filter=new bloomFilter();
String values = "stone2083@yahoo.cn,baidu@dd.cn" ;
for(String value:values.split(",")){
System.out.println(filter.contains(value));
filter.add(value);
System.out.println(filter.contains(value));
}
}
}
0 0
- BloomFilter
- BloomFilter
- BloomFilter
- BloomFilter
- BloomFilter
- BloomFilter
- BloomFilter
- BloomFilter
- BloomFilter
- bloomFilter
- BloomFilter
- BloomFilter
- BloomFilter
- BloomFilter--实例
- BloomFilter简介
- 使用bloomfilter
- BloomFilter原理
- 04 BloomFilter
- linux修改ip
- 设计模式前篇面向对象设计原则
- SpringMVC源码剖析(五) - 消息转换器HttpMessageConverter
- 《Linux4.0设备驱动开发详解》笔记--第十章:Linux设备驱动中的中断与时钟
- 三元运算符 比较三个数大小 三元操作符的类型务必一致
- bloomFilter
- 移动端rem布局的理解
- 装系统后无网卡驱动、USB驱动,如何处理
- 《Linux4.0设备驱动开发详解》笔记--第十一章:内存与I/O访问
- Android新人报道
- nio FileChannel中文乱码问题
- SVN无法提交.a文件的解决办法
- VB编程的必备技巧
- phpMyAdmin创建mysql用户无法登陆/提示密码错误