HashMap簡述

在JDK中,HashMap是存儲鍵值對用的比較多的一個(gè)類。

其基于哈希散列表計(jì)算位置來達(dá)到鍵不重復(fù)存儲。

其內(nèi)部數(shù)據(jù)結(jié)構(gòu)是數(shù)組(散列桶)+鏈表+紅黑樹,

數(shù)組是基礎(chǔ)存儲,存儲位置為計(jì)算出來的hash值和數(shù)組長度減一相與,而數(shù)組長度一直都為2的整數(shù)冪。

鏈表是遇到哈希碰撞時(shí),即數(shù)組同一下標(biāo)要存放第二個(gè)值的時(shí)候,會(huì)在原值后面鏈接上下一個(gè)鍵值對。

紅黑樹是在鏈表過長(默認(rèn)大于8)時(shí)進(jìn)行的結(jié)構(gòu)重組,將鏈表轉(zhuǎn)換為紅黑樹,加快搜索效率。

HashMap的聲明

public class HashMap<K,V> extends AbstractMap<K,V>    implements Map<K,V>, Cloneable, Serializable

擴(kuò)展Map接口代表這個(gè)類是存儲鍵值對的數(shù)據(jù)結(jié)構(gòu)。

HashMap的域

在以往的版本中,是用Entry<K,V>來表示一個(gè)鍵值對結(jié)點(diǎn)的,而后來引入了紅黑樹表示的節(jié)點(diǎn)(TreeNode),就產(chǎn)生了新的表示方法(Node)。

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn) 

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式