摘要:前言布隆過濾器是年由布隆提出的。布隆過濾器可以用于檢索一個元素是否在一個集合中。而在中有個位向量,我們可以基于實現(xiàn)一個簡單實用的布隆過濾器。實現(xiàn)代碼布隆過濾器將元素加入到過濾器為時,索引為判斷元素是否在過濾器中為存在,為不存在為時,索引為
前言
布隆過濾器(Bloom Filter)是1970年由布隆提出的。它實際上是一個很長的二進制向量和一系列隨機映射函數(shù)。
布隆過濾器可以用于檢索一個元素是否在一個集合中。它的優(yōu)點是空間效率和查詢時間都比一般的算法要好的多,缺點是有一定的誤識別率和刪除困難。
而在Java中有個BitSet(位向量),我們可以基于BitSet實現(xiàn)一個簡單實用的布隆過濾器。
實現(xiàn)代碼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()); } } }
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/73924.html
摘要:非對稱加密算法的安全性往往需要基于數(shù)學問題來保障,目前主要有基于大數(shù)質(zhì)因子分解離散對數(shù)橢圓曲線等經(jīng)典數(shù)學難題進行保護。消息認證碼基于對稱加密,可以用于對消息完整性進行保護。 Hash 算法與數(shù)字摘要 Hash (哈希或散列)算法它能將任意長度的二進制明文串映射為較短的(通常是固定長度的)二進制串(Hash值),并且不同的明文很難映射為相同的Hash值。 Hash 定義 Hash (哈希...
閱讀 1772·2021-10-11 10:59
閱讀 2416·2021-09-30 09:53
閱讀 1780·2021-09-22 15:28
閱讀 2804·2019-08-29 15:29
閱讀 1568·2019-08-29 13:53
閱讀 3217·2019-08-29 12:34
閱讀 2865·2019-08-26 10:16
閱讀 2673·2019-08-23 15:16