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