这两天遇到了一个数据处理的问题
是使用Java将三个不定数量(至少百万)的map集合中取得数据的交集
这里可以使用布隆进行数据处理
效果是非常好的.,这里用的是整型
所以速度也比较快,如果是字符串的话,可以hash一下
这是布隆工具类
class BloomFilter{
private static final int BIT_SIZE = 2 << 28 ;//二进制向量的位数,用作数据存储
private BitSet bits = new BitSet(BIT_SIZE);
/**
* 像过滤器中添加字符串
*/
public void addValue(int value)
{
//将数据bit上变为1
bits.set(value, true);
}
/**
* 判断字符串是否包含在布隆过滤器中
*/
public boolean contains(int value)
{
boolean ret = true;
//将要比较的数据与布隆过滤器比对
ret = ret && bits.get(value);
return ret;
}
}