前言布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。而在Java中有个BitSet(位向量),我们可以基于BitSet实现一个简单实用的布隆过滤器。实现代码import java.util.BitSet;/** * 布隆过滤器 * @author RJH * create at 2019-03-25 /public class BloomFilter<T> { private BitSet data; public BloomFilter() { this.data = new BitSet(); } /* * 将元素加入到过滤器 * @param t / public void add(T t){ if(t==null){//为null时,索引为0 data.set(0); }else{ data.set(t.hashCode()); } } /* * 判断元素是否在过滤器中<br/> * @param t * @return true为存在,false为不存在 */ public boolean filter(T t){ if(t==null){//为null时,索引为0 return data.get(0); }else{ return data.get(t.hashCode()); } }}