HashMap簡(jiǎn)述
在JDK中,HashMap是存儲(chǔ)鍵值對(duì)用的比較多的一個(gè)類。
其基于哈希散列表計(jì)算位置來達(dá)到鍵不重復(fù)存儲(chǔ)。
其內(nèi)部數(shù)據(jù)結(jié)構(gòu)是數(shù)組(散列桶)+鏈表+紅黑樹,
數(shù)組是基礎(chǔ)存儲(chǔ),存儲(chǔ)位置為計(jì)算出來的hash值和數(shù)組長度減一相與,而數(shù)組長度一直都為2的整數(shù)冪。
鏈表是遇到哈希碰撞時(shí),即數(shù)組同一下標(biāo)要存放第二個(gè)值的時(shí)候,會(huì)在原值后面鏈接上下一個(gè)鍵值對(duì)。
紅黑樹是在鏈表過長(默認(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è)類是存儲(chǔ)鍵值對(duì)的數(shù)據(jù)結(jié)構(gòu)。
HashMap的域
在以往的版本中,是用Entry<K,V>來表示一個(gè)鍵值對(duì)結(jié)點(diǎn)的,而后來引入了紅黑樹表示的節(jié)點(diǎn)(TreeNode),就產(chǎn)生了新的表示方法(Node)。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26
