??Map四種遍歷的代碼示例(1)數(shù)據(jù)準(zhǔn)備? ? ??
遍歷方式一:需要說明的是,該方法不是最優(yōu)選擇,一般不推薦使用
遍歷方式二:通過對(duì)map entrySet的遍歷,也可以同時(shí)拿到key和value,一般情況下,性能上要優(yōu)于keyset,這一種也是最常用的遍歷方法,但I(xiàn)terator也有其優(yōu)勢(shì):在用foreach遍歷map時(shí),如果改變其大小,會(huì)報(bào)錯(cuò),但如果只是刪除元素,可以使用Iterator的remove方法刪除元素
遍歷方式三:對(duì)于上面的幾種foreach都可以用Iterator代替,其實(shí)foreach在java5中才被支持,foreach的寫法看起來更簡(jiǎn)潔
遍歷方式四:
結(jié)論一
一般來講使用entrySet的方式進(jìn)行遍歷是效率最高的,因?yàn)閔ashMap內(nèi)部的存儲(chǔ)結(jié)構(gòu)就是基于Entry的數(shù)組,在用這種方式進(jìn)行遍歷時(shí),只需要遍歷一次即可。而使用其他方式的時(shí)間復(fù)雜度可以會(huì)提高,例如:keySet方式,每次都需要通過key值去計(jì)算對(duì)應(yīng)的hash,然后再通過hash獲取對(duì)應(yīng)的結(jié)果值,因此效率較低。
結(jié)論2:
如果只是獲取key,或者value,推薦使用keySet或者values方式
如果同時(shí)需要key和value推薦使用entrySet
如果需要在遍歷過程中刪除元素推薦使用Iterator
如果需要在遍歷過程中增加元素,可以新建一個(gè)臨時(shí)map存放新增的元素,等遍歷完畢,再把臨時(shí)map放到原來的map中
更多相關(guān)內(nèi)容可以看一下下方視頻學(xué)習(xí)
java基礎(chǔ)
java-環(huán)境搭建及基礎(chǔ)語法
http://www.makeru.com.cn/live/1394_202.html?s=143160
Java基礎(chǔ)(系列“點(diǎn)標(biāo)題下的開始學(xué)習(xí)就可以看了”)
http://www.makeru.com.cn/course/details/2065?s=143160
精講java IO流
http://www.makeru.com.cn/live/1394_816.html?s=143160
集合
http://www.makeru.com.cn/live/1394_258.html?s=143160
構(gòu)造函數(shù)/繼承
http://www.makeru.com.cn/live/1394_243.html?s=143160
方法的重載與重寫/final關(guān)鍵字
或者可以進(jìn)入扣扣群跟各路大神一起探討(914019772)