摘要:方法計算出的值,然后去尋找方法如果需要的存放的存儲空間大于默認數(shù)組大小負載因子的乘積,那么就發(fā)生擴容,擴大為原來的兩倍問題為什么的容量總是的次方因為中有一個方法是這樣可以減少碰撞概率。例子與不會發(fā)生碰撞會發(fā)生碰撞,這是一會我數(shù)學(xué)概率問題。
Hashmap源碼
1、 構(gòu)造器:
a)獲得默認數(shù)組大小:1>>4 :16
b) 獲得負載因子:0.75:衡量hashmap的空間使用程度
i.過大:使用空間更加充分,但是查找效率變低,即時間復(fù)雜度變大 ii.過小:hashmap數(shù)據(jù)過于稀疏,造成空間浪費,即空間復(fù)雜度變大
c)創(chuàng)建數(shù)組
2、 Put()方法:使用key的hash算法,計算出可key的存儲的數(shù)組位置,確定key的位置后相應(yīng)的value也會確定,如果數(shù)組位置已經(jīng)有數(shù)值存在,則以第一個值為鏈頭以鏈表形式存儲。
3、 Get()方法:計算出key的hashcode值,然后去尋找
4、 Resize()方法:如果需要的存放的存儲空間大于默認數(shù)組大小*負載因子的乘積,那么就發(fā)生擴容,擴大為原來的兩倍
5、 問題:
a)為什么hashmap的容量總是2的次方
i.因為hashmap中有一個方法是h&table.length-1,這樣可以減少碰撞概率。 ii.例子: 8&14 9&14 與 8&15 9&15 15不會發(fā)生碰撞 14會發(fā)生碰撞,這是一會我數(shù)學(xué)概率問題。
b) 可以的話建議使用hashmap的clear方法循環(huán)使用hashmap
i.應(yīng)為hashmap是強引用類型,原有不適使用的hashmap不會被jvm回收,可能造成內(nèi)存泄露高并發(fā)的hashmap
1、 情況(1.7):內(nèi)部鏈表遭到破壞,發(fā)生鏈表成環(huán),造成死循環(huán),cpu飆升
2、 解決:1.8 引入兩個指針聲明 確保順序
確保hashmap線程安全1、 方法
a)使用collections.synchronizedmap方法
b) 使用concurrenthashmap并發(fā)集合類代替
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/72782.html
摘要:推導(dǎo)為何等于在中所有數(shù)值都以標準的雙精度浮點數(shù)進行存儲的。先來了解下標準下的雙精度浮點數(shù)。精度位總共是,因為用科學(xué)計數(shù)法表示,所以首位固定的就沒有占用空間。驗證完成的最大安全數(shù)是如何來的根據(jù)雙精度浮點數(shù)的構(gòu)成,精度位數(shù)是。 閱讀完本文可以了解到 0.1 + 0.2 為什么等于 0.30000000000000004 以及 JavaScript 中最大安全數(shù)是如何來的。 十進制小數(shù)轉(zhuǎn)為二...
摘要:對,滑動式幻燈片的關(guān)鍵就在于隱藏。在條件里我們添加一個事件相當(dāng)于滑動后的回掉,依賴這個事件在幻燈片滑動執(zhí)行完畢后立即執(zhí)行里面的閃回操作。通過添加事件監(jiān)聽滑動是否結(jié)束從而迅速閃回,達到貌似無限滑動的效果。 slider輪播組件,在各類網(wǎng)站上出現(xiàn)及其頻繁,有漸隱式的,滑動式的等等一系列。栗子在這: 但我當(dāng)初學(xué)習(xí)寫輪播時卻被各種入門教程搞得焦頭爛額。不是代碼太復(fù)雜,就是封裝太嚴重,初學(xué)者很難...
閱讀 3197·2021-11-25 09:43
閱讀 3408·2021-11-11 16:54
閱讀 823·2021-11-02 14:42
閱讀 3742·2021-09-30 09:58
閱讀 3664·2021-09-29 09:44
閱讀 1279·2019-08-30 15:56
閱讀 2097·2019-08-30 15:54
閱讀 2985·2019-08-30 15:43