序言
本來是不打算先講map的,但是隨著對set集合的認識,發(fā)現(xiàn)如果不先搞懂各種map,是無法理解set的。因為set集合很多的底層就是用map來存儲的。比如HashSet就是用HashMap,LinkedHashSet就是用LinkedHashMap。所以打算把map講完把。
---WH
一、LinkedHashMap
先來說說它的特點,然后在一一通過分析源碼來驗證其實現(xiàn)原理
1、能夠保證插入元素的順序。深入一點講,有兩種迭代元素的方式,一種是按照插入元素時的順序迭代,比如,插入A,B,C,那么迭代也是A,B,C,另一種是按照訪問順序,比如,在迭代前,訪問了B,那么迭代的順序就是A,C,B,比如在迭代前,訪問了B,接著又訪問了A,那么迭代順序為C,B,A,比如,在迭代前訪問了B,接著又訪問了B,然后在訪問了A,迭代順序還是C,B,A。要說明的意思就是不是近期訪問的次數(shù)最多,就放最后面迭代,而是看迭代前被訪問的時間長短決定。
3、內(nèi)部存儲的元素的模型。entry是下面這樣的,相比HashMap,多了兩個屬性,一個before,一個after。next和after有時候會指向同一個entry,有時候next指向null,而after指向entry。這個具體后面分析。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26