整理五種最常見map遍歷方式+思維導圖總結逼肯,不收藏會后悔

前言

Java容器,作為最基礎的問題桃煎,無論你是多牛逼的程序員篮幢,都離不開這個技術的使用和總結,但是为迈,作為我們?nèi)粘i_發(fā)工作中最常用的技術之一三椿,你是否真的了解(大佬自動掠過,謝謝)

這是我在日常工作以及學習中總結的關于Java容器的總結葫辐,今天就單講一點:Map

Map 遍歷

我們通過源碼來回想一下

Map<Integer, String> map = new HashMap<Integer, String>();

map.put(1, "a");

map.put(2, "b");

map.put(3, "ab");

map.put(4, "ab");

map.put(4, "ab");// 和上面相同 搜锰, 會自己篩選

System.out.println(map.size());

// 第一種:

System.out.println("第一種:通過Map.keySet遍歷key和value:");

for (Integer in : map.keySet()) {

? ? //map.keySet()返回的是所有key的值

? ? String str = map.get(in);//得到每個key多對用value的值

? ? System.out.println(in + "? ? " + str);

}

// 第二種:

System.out.println("第二種:通過Map.entrySet使用iterator遍歷key和value:");

Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();

while (it.hasNext()) {

? ? Map.Entry<Integer, String> entry = it.next();

? ? System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());

}

// 第三種:推薦,尤其是容量大時, 效率高

System.out.println("第三種:通過Map.entrySet遍歷key和value");

for (Map.Entry<Integer, String> entry : map.entrySet()) {

? ? System.out.println("key= " + entry.getKey() + " and value= "+ entry.getValue());

}

// 第四種:效率低

System.out.println("第四種:通過Map.values()遍歷所有的value耿战,但不能遍歷key");

for (String v : map.values()) {

? ? System.out.println("value= " + v);

}

2.map的長度:

int size=Map.size();

var length? = Object.keys(map).length ;

3.java? 8? 遍歷

public class LambdaMap {

? ? private Map<String, Object> map = new HashMap<>();

? ? @Before

? ? public void initData() {

? ? ? ? map.put("key1", "value1");

? ? ? ? map.put("key2", "value2");

? ? ? ? map.put("key3", "value3");

? ? ? ? map.put("key4", 4);

? ? ? ? map.put("key5", 5);

? ? ? ? map.put("key5", 'h');

? ? }

? ? /**

? ? * 遍歷Map的方式一

? ? * 通過Map.keySet遍歷key和value

? ? */

? ? @Test

? ? public void testErgodicWayOne() {

? ? ? ? System.out.println("---------------------Before JAVA8 ------------------------------");

? ? ? ? for (String key : map.keySet()) {

? ? ? ? ? ? System.out.println("map.get(" + key + ") = " + map.get(key));

? ? ? ? }

? ? ? ? System.out.println("---------------------JAVA8 ------------------------------");

? ? ? ? map.keySet().forEach(key -> System.out.println("map.get(" + key + ") = " + map.get(key)));

? ? }

? ? /**

? ? * 遍歷Map第二種

? ? * 通過Map.entrySet使用Iterator遍歷key和value

? ? */

? ? @Test

? ? public void testErgodicWayTwo() {

? ? ? ? System.out.println("---------------------Before JAVA8 ------------------------------");

? ? ? ? Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();

? ? ? ? while (iterator.hasNext()) {

? ? ? ? ? ? Map.Entry<String, Object> entry = iterator.next();

? ? ? ? ? ? System.out.println("key:value = " + entry.getKey() + ":" + entry.getValue());

? ? ? ? }

? ? ? ? System.out.println("---------------------JAVA8 ------------------------------");

? ? ? ? map.entrySet().iterator().forEachRemaining(item -> System.out.println("key:value=" + item.getKey() + ":" + item.getValue()));

? ? }

? ? /**

? ? * 遍歷Map第三種

? ? * 通過Map.entrySet遍歷key和value蛋叼,在大容量時推薦使用

? ? */

? ? @Test

? ? public void testErgodicWayThree() {

? ? ? ? System.out.println("---------------------Before JAVA8 ------------------------------");

? ? ? ? for (Map.Entry<String, Object> entry : map.entrySet()) {

? ? ? ? ? ? System.out.println("key:value = " + entry.getKey() + ":" + entry.getValue());

? ? ? ? }

? ? ? ? System.out.println("---------------------JAVA8 ------------------------------");

? ? ? ? map.entrySet().forEach(entry -> System.out.println("key:value = " + entry.getKey() + ":" + entry.getValue()));

? ? }

? ? /**

? ? * 遍歷Map第四種

? ? * 通過Map.values()遍歷所有的value,但不能遍歷key

? ? */

? ? @Test

? ? public void testErgodicWayFour() {

? ? ? ? System.out.println("---------------------Before JAVA8 ------------------------------");

? ? ? ? for (Object value : map.values()) {

? ? ? ? ? ? System.out.println("map.value = " + value);

? ? ? ? }

? ? ? ? System.out.println("---------------------JAVA8 ------------------------------");

? ? ? ? map.values().forEach(System.out::println); // 等價于map.values().forEach(value -> System.out.println(value));

? ? }

? ? /**

? ? * 遍歷Map第五種

? ? * 通過k,v遍歷剂陡,Java8獨有的

? ? */

? ? @Test

? ? public void testErgodicWayFive() {

? ? ? ? System.out.println("---------------------Only JAVA8 ------------------------------");

? ? ? ? map.forEach((k, v) -> System.out.println("key:value = " + k + ":" + v));

? ? }

}

這里展示了5種map的遍歷方式狈涮,也是我在日常工作過程中經(jīng)常使用的幾種技術,在這里總結給大家鸭栖,可能針對新人會更加有用一些歌馍,已經(jīng)非常熟練的朋友,就當作是回顧一下吧

最后

學習的路上從來沒有盡頭這一說晕鹊,需要不斷地努力骆姐、進步,才能不被時代所篩選

需要我整理的知識體系的捏题,關注+轉(zhuǎn)發(fā)后玻褪,私信“資料”即可查看獲取方式

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市公荧,隨后出現(xiàn)的幾起案子带射,更是在濱河造成了極大的恐慌,老刑警劉巖循狰,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窟社,死亡現(xiàn)場離奇詭異,居然都是意外死亡绪钥,警方通過查閱死者的電腦和手機灿里,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來程腹,“玉大人匣吊,你說我怎么就攤上這事。” “怎么了色鸳?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵社痛,是天一觀的道長。 經(jīng)常有香客問我命雀,道長蒜哀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任吏砂,我火速辦了婚禮撵儿,結果婚禮上,老公的妹妹穿的比我還像新娘狐血。我一直安慰自己淀歇,他們只是感情好,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布氛雪。 她就那樣靜靜地躺著,像睡著了一般耸成。 火紅的嫁衣襯著肌膚如雪报亩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天井氢,我揣著相機與錄音弦追,去河邊找鬼。 笑死花竞,一個胖子當著我的面吹牛劲件,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播约急,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼零远,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了厌蔽?” 一聲冷哼從身側響起牵辣,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奴饮,沒想到半個月后纬向,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡戴卜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年逾条,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片投剥。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡师脂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情危彩,我是刑警寧澤攒磨,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站汤徽,受9級特大地震影響娩缰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谒府,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一拼坎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧完疫,春花似錦泰鸡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至芳誓,卻和暖如春余舶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锹淌。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工匿值, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赂摆。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓挟憔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親烟号。 傳聞我的和親對象是個殘疾皇子绊谭,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354