LinkedList颁督、HashMap和LinkedHashMap初探

一践啄、LinkedList

一、LinkedList概述

LinkedList是一個簡單的數(shù)據(jù)結構沉御,與ArrayList不同的是往核,他是基于鏈表實現(xiàn)的。

這樣一個簡單的操作:

LinkedListlist=newLinkedList();

list.add("語文: 1");

list.add("數(shù)學: 2");

list.add("英語: 3");


----以雙向鏈表實現(xiàn)嚷节。鏈表無容量限制,但雙向鏈表本身使用了更多空間虎锚,也需要額外的鏈表指針操作硫痰。按下標訪問元素—get(i)/set(i,e) 要悲劇的遍歷鏈表將指針移動到位(如果i>數(shù)組大小的一半,會從末尾移起)窜护。

插入效斑、刪除元素時修改前后節(jié)點的指針即可,但還是要遍歷部分鏈表的指針才能移動到下標所指的位置柱徙,只有在鏈表兩頭的操作—add(), addFirst(),removeLast()或用iterator()上的remove()能省掉指針的移動缓屠。

1.1、get和set函數(shù)

這兩個函數(shù)都調(diào)用了node函數(shù)护侮,該函數(shù)會以O(n/2)的性能去獲取一個節(jié)點

Nodenode(intindex) {//assert isElementIndex(index);if(index<(size>>1)) {Nodex=first;for(inti=0; ix=last;for(inti=size-1; i>index; i--)? ? ? ? ? ? x=x.prev;returnx;? ? }}

就是判斷index是在前半?yún)^(qū)間還是后半?yún)^(qū)間敌完,如果在前半?yún)^(qū)間就從head搜索,而在后半?yún)^(qū)間就從tail搜索羊初。而不是一直從頭到尾的搜索滨溉。如此設計,將節(jié)點訪問的復雜度由O(n)變?yōu)镺(n/2)长赞。

二晦攒、HashMap

2.1、初次見面

當我們執(zhí)行以下操作時:

HashMapmap=newHashMap();

map.put("語文",1);

map.put("數(shù)學",2);

map.put("英語",3);

map.put("歷史",4);

map.put("政治",5);

map.put("地理",6);

map.put("生物",7);

map.put("化學",8);

for(Entryentry:map.entrySet()) {System.out.println(entry.getKey()+":"+entry.getValue());}

運行結果時:政治: 5

生物: 7

歷史: 4

數(shù)學: 2

化學: 8

語文: 1

英語: 3

地理: 6

what得哆!發(fā)生了什么脯颜,那就上個圖吧!


圖解

從圖中提取幾個關鍵的信息:基于Map接口實現(xiàn)贩据、允許null鍵/值栋操、非同步、不保證有序(比如插入的順序)乐设、也不保證序不隨時間變化讼庇。

2.2、HashMap的put和get

hashmap初始化時會定義一個table近尚。如果是普通的map的話蠕啄,直接將將item放入到map的對應列當中。但是hashmap呢



三、LinkedHashMap

看下這個代碼

LinkedHashMaplmap=newLinkedHashMap();

lmap.put("語文",1);lmap.put("數(shù)學",2);lmap.put("英語",3);lmap.put("歷史",4);lmap.put("政治",5);lmap.put("地理",6);lmap.put("生物",7);lmap.put("化學",8);

for(Entryentry:lmap.entrySet()) {System.out.println(entry.getKey()+":"+entry.getValue());}

運行結果:語文: 1 數(shù)學: 2 英語: 3 歷史: 4 政治: 5 地理: 6 生物: 7 化學: 8


圖解

我們可以觀察到歼跟,和HashMap的運行結果不同和媳,LinkedHashMap的迭代輸出的結果保持了插入順序。是什么樣的結構使得LinkedHashMap具有如此特性呢哈街?

LinkedHashMap是Hash表和鏈表的實現(xiàn)留瞳,并且依靠著雙向鏈表保證了迭代順序是插入的順序。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末骚秦,一起剝皮案震驚了整個濱河市她倘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌作箍,老刑警劉巖硬梁,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異胞得,居然都是意外死亡荧止,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門阶剑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跃巡,“玉大人,你說我怎么就攤上這事牧愁∷匦埃” “怎么了?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵递宅,是天一觀的道長娘香。 經(jīng)常有香客問我,道長办龄,這世上最難降的妖魔是什么烘绽? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮俐填,結果婚禮上安接,老公的妹妹穿的比我還像新娘。我一直安慰自己英融,他們只是感情好盏檐,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著驶悟,像睡著了一般胡野。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上痕鳍,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天硫豆,我揣著相機與錄音龙巨,去河邊找鬼。 笑死熊响,一個胖子當著我的面吹牛旨别,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播汗茄,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼秸弛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了洪碳?” 一聲冷哼從身側響起递览,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞳腌,沒想到半個月后非迹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡纯趋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了冷离。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吵冒。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖西剥,靈堂內(nèi)的尸體忽然破棺而出痹栖,到底是詐尸還是另有隱情,我是刑警寧澤瞭空,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布揪阿,位于F島的核電站,受9級特大地震影響咆畏,放射性物質(zhì)發(fā)生泄漏南捂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一旧找、第九天 我趴在偏房一處隱蔽的房頂上張望溺健。 院中可真熱鬧,春花似錦钮蛛、人聲如沸鞭缭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岭辣。三九已至,卻和暖如春甸饱,著一層夾襖步出監(jiān)牢的瞬間沦童,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留搞动,地道東北人躏精。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像鹦肿,于是被迫代替她去往敵國和親矗烛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 一、基本數(shù)據(jù)類型 注釋 單行注釋:// 區(qū)域注釋:/* */ 文檔注釋:/** */ 數(shù)值 對于byte類型而言...
    龍貓小爺閱讀 4,268評論 0 16
  • 實際上涣旨,HashSet 和 HashMap 之間有很多相似之處歪架,對于 HashSet 而言,系統(tǒng)采用 Hash 算...
    曹振華閱讀 2,515評論 1 37
  • 1.什么是HashMap 基于哈希表的Map接口的非同步實現(xiàn) 此實現(xiàn)提供所有可選的映射操作霹陡,并允許使用null值和...
    蒼賢閱讀 513評論 0 1
  • Collection & Map Collection 子類有 List 和 Set List --> Array...
    任教主來也閱讀 3,169評論 1 9
  • 你走過的地方 有什么遺落 并且和蚪,開出一朵清淺的花 歲月的河床上 一群一群的魚兒游過 泛起的泡沫讓人迷惑 我試圖打撈...
    水晶心語閱讀 360評論 2 9