我在這里只是為了怕遺忘做一些簡單的記錄
布隆表,又被稱為布隆過濾器。
應(yīng)用場景,當(dāng)數(shù)據(jù)量過于大時,如果要去判斷一條數(shù)據(jù)在那些數(shù)據(jù)中是否存在時,是很慢的。這時候,如果要使用最常見的equal方法。相率是很低下的。 這時候才會用上布隆表
布隆表是基于hash的。因為其基于hash,所以就一定不是完全準(zhǔn)確的。 布隆表是這么進(jìn)行運(yùn)作的,先申請內(nèi)存,然后將記錄的數(shù)組中的值都?xì)w0。將數(shù)據(jù)的一個key值(可以是字段,id等等)經(jīng)過hash計算,放在該數(shù)組的某個位置,就講該位置的數(shù)值改為1。
當(dāng)一個布隆表建立之后,就可以判斷該值是否存在,再去服務(wù)器中去取數(shù)據(jù)。 如果在布隆表中不存在,那么一定不存在。如果在布隆表中存在, 也不一定就存在。但是這個幾率很低。
布隆表的主要應(yīng)用有:黑白名單,以及一些判斷是否存在的應(yīng)用中
順便提一下hashMap中的兩個值,因為在計算hash的時候,經(jīng)常會用到這兩個鬼東西。
容量(Capacity)和負(fù)載因子Load factor capactiy就是一個hashMap的大小了。而load factor是其承擔(dān)負(fù)載的比例。 如果map中的元素比例超過load factor,那么capacity自動擴(kuò)張為原來容量的2倍
hashmap工作原理 - hashmap其實是一個由鏈表構(gòu)成的數(shù)組,每存入一個值,在計算其hashcode后存入這個數(shù)組。 - 因為不同key的hash值是有很小的概率會相同的,這叫做沖突。這時候,就會在該位置向下鏈下去。 - 如果key的hash相同,并且在equal后發(fā)現(xiàn)也相同,那么就直接覆蓋 - hashMap在取值的時候,會先根據(jù)hash值查找,存在的話,再通過equal方法比較其key值
新聞熱點(diǎn)
疑難解答