布隆过滤器和hashmap

来源:互联网 发布:handbrake是什么软件 编辑:程序博客网 时间:2024/05/20 22:27

我在这里只是为了怕遗忘做一些简单的记录

布隆表,又被称为布隆过滤器。

应用场景,当数据量过于大时,如果要去判断一条数据在那些数据中是否存在时,是很慢的。这时候,如果要使用最常见的equal方法。相率是很低下的。
这时候才会用上布隆表

布隆表是基于hash的。因为其基于hash,所以就一定不是完全准确的。
布隆表是这么进行运作的,先申请内存,然后将记录的数组中的值都归0。将数据的一个key值(可以是字段,id等等)经过hash计算,放在该数组的某个位置,就讲该位置的数值改为1。

当一个布隆表建立之后,就可以判断该值是否存在,再去服务器中去取数据。
如果在布隆表中不存在,那么一定不存在。如果在布隆表中存在, 也不一定就存在。但是这个几率很低。

布隆表的主要应用有:黑白名单,以及一些判断是否存在的应用中

顺便提一下hashMap中的两个值,因为在计算hash的时候,经常会用到这两个鬼东西。

容量(Capacity)和负载因子Load factor
capactiy就是一个hashMap的大小了。而load factor是其承担负载的比例。
如果map中的元素比例超过load factor,那么capacity自动扩张为原来容量的2倍

hashmap工作原理
- hashmap其实是一个由链表构成的数组,每存入一个值,在计算其hashcode后存入这个数组。
- 因为不同key的hash值是有很小的概率会相同的,这叫做冲突。这时候,就会在该位置向下链下去。
- 如果key的hash相同,并且在equal后发现也相同,那么就直接覆盖
- hashMap在取值的时候,会先根据hash值查找,存在的话,再通过equal方法比较其key值

1 0
原创粉丝点击