摘要:前言布隆过滤器是年由布隆提出的。布隆过滤器可以用于检索一个元素是否在一个集合中。而在中有个位向量,我们可以基于实现一个简单实用的布隆过滤器。实现代码布隆过滤器将元素加入到过滤器为时,索引为判断元素是否在过滤器中为存在,为不存在为时,索引为
前言
布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。
布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。
而在Java中有个BitSet(位向量),我们可以基于BitSet实现一个简单实用的布隆过滤器。
实现代码import java.util.BitSet; /** * 布隆过滤器 * @author RJH * create at 2019-03-25 */ public class BloomFilter{ 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()); } } /** * 判断元素是否在过滤器中
* @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()); } } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/73924.html
摘要:非对称加密算法的安全性往往需要基于数学问题来保障,目前主要有基于大数质因子分解离散对数椭圆曲线等经典数学难题进行保护。消息认证码基于对称加密,可以用于对消息完整性进行保护。 Hash 算法与数字摘要 Hash (哈希或散列)算法它能将任意长度的二进制明文串映射为较短的(通常是固定长度的)二进制串(Hash值),并且不同的明文很难映射为相同的Hash值。 Hash 定义 Hash (哈希...
阅读 1713·2021-10-11 10:59
阅读 2384·2021-09-30 09:53
阅读 1724·2021-09-22 15:28
阅读 2774·2019-08-29 15:29
阅读 1533·2019-08-29 13:53
阅读 3171·2019-08-29 12:34
阅读 2831·2019-08-26 10:16
阅读 2599·2019-08-23 15:16