最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java遍歷Map對(duì)象的四種方式

 更新時(shí)間:2015年10月29日 13:53:26   作者:蒲公英學(xué)長  
本文給大家介紹java遍歷map對(duì)象的四種方式,對(duì)java中遍歷map感興趣的朋友可以一起了解了解

關(guān)于java中遍歷map具體哪四種方式,請(qǐng)看下文詳解吧。

方式一 這是最常見的并且在大多數(shù)情況下也是最可取的遍歷方式。在鍵值都需要時(shí)使用。

 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 
 for (Map.Entry<Integer, Integer> entry : map.entrySet()) { 
   System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); 
 } 

方法二 在for-each循環(huán)中遍歷keys或values。

如果只需要map中的鍵或者值,你可以通過keySet或values來實(shí)現(xiàn)遍歷,而不是用entrySet。

 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 
 //遍歷map中的鍵 
 for (Integer key : map.keySet()) { 
   System.out.println("Key = " + key); 
 } 
 //遍歷map中的值 
 for (Integer value : map.values()) { 
   System.out.println("Value = " + value); 
 } 

該方法比entrySet遍歷在性能上稍好(快了10%),而且代碼更加干凈。

方法三使用Iterator遍歷

使用泛型

 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 
 Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator(); 
 while (entries.hasNext()) { 
   Map.Entry<Integer, Integer> entry = entries.next(); 
   System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); 
 } 

不使用泛型:

 Map map = new HashMap(); 
 Iterator entries = map.entrySet().iterator(); 
 while (entries.hasNext()) { 
   Map.Entry entry = (Map.Entry) entries.next(); 
   Integer key = (Integer)entry.getKey(); 
   Integer value = (Integer)entry.getValue(); 
   System.out.println("Key = " + key + ", Value = " + value); 
 } 

你也可以在keySet和values上應(yīng)用同樣的方法。

該種方式看起來冗余卻有其優(yōu)點(diǎn)所在。首先,在老版本java中這是惟一遍歷map的方式。另一個(gè)好處是,你可以在遍歷時(shí)調(diào)用iterator.remove()來刪除entries,另兩個(gè)方法則不能。根據(jù)javadoc的說明,如果在for-each遍歷中嘗試使用此方法,結(jié)果是不可預(yù)測的。

從性能方面看,該方法類同于for-each遍歷(即方法二)的性能。

方法四、通過鍵找值遍歷(效率低)

 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 
 for (Integer key : map.keySet()) { 
   Integer value = map.get(key); 
   System.out.println("Key = " + key + ", Value = " + value); 

作為方法一的替代,這個(gè)代碼看上去更加干凈;但實(shí)際上它相當(dāng)慢且無效率。因?yàn)閺逆I取值是耗時(shí)的操作(與方法一相比,在不同的Map實(shí)現(xiàn)中該方法慢了20%~200%)。如果你安裝了FindBugs,它會(huì)做出檢查并警告你關(guān)于哪些是低效率的遍歷。所以盡量避免使用。

總結(jié)

如果僅需要鍵(keys)或值(values)使用方法二。如果你使用的語言版本低于java 5,或是打算在遍歷時(shí)刪除entries,必須使用方法三。否則使用方法一(鍵值都要)。

相關(guān)文章

  • Java基礎(chǔ)之如何學(xué)好Java

    Java基礎(chǔ)之如何學(xué)好Java

    這篇文章已經(jīng)是有數(shù)年“網(wǎng)齡”的老文,不過在今天看來仍然經(jīng)典。如何學(xué)習(xí)java?本篇文章可以說也是面對(duì)編程初學(xué)者的一篇指導(dǎo)文章,其中對(duì)于如何學(xué)習(xí)Java的步驟的介紹,很多也適用于開發(fā)領(lǐng)域其他技能的學(xué)習(xí)。
    2014-10-10
  • 通過pipeline配置sonar自動(dòng)化實(shí)現(xiàn)過程解析

    通過pipeline配置sonar自動(dòng)化實(shí)現(xiàn)過程解析

    這篇文章主要介紹了通過pipeline配置sonar自動(dòng)化實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • spring cloud feign實(shí)現(xiàn)遠(yuǎn)程調(diào)用服務(wù)傳輸文件的方法

    spring cloud feign實(shí)現(xiàn)遠(yuǎn)程調(diào)用服務(wù)傳輸文件的方法

    這篇文章主要介紹了spring cloud feign實(shí)現(xiàn)遠(yuǎn)程調(diào)用服務(wù)傳輸文件的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • SpringBoot如何實(shí)現(xiàn)同域SSO(單點(diǎn)登錄)

    SpringBoot如何實(shí)現(xiàn)同域SSO(單點(diǎn)登錄)

    單點(diǎn)登錄(SingleSignOn,SSO),就是通過用戶的一次性鑒別登錄。即在多個(gè)應(yīng)用系統(tǒng)中,只需要登錄一次,就可以訪問其他相互信任的應(yīng)用系統(tǒng),本文將介紹SpringBoot如何實(shí)現(xiàn)同域SSO(單點(diǎn)登錄)
    2021-05-05
  • java的nio的使用示例分享

    java的nio的使用示例分享

    這篇教程展示了5個(gè)在Java編程的一些常見場景里使用NIO和NIO.2包的簡單示例,需要的朋友可以參考下
    2014-03-03
  • Spring?Security?登錄時(shí)添加圖形驗(yàn)證碼實(shí)現(xiàn)實(shí)例

    Spring?Security?登錄時(shí)添加圖形驗(yàn)證碼實(shí)現(xiàn)實(shí)例

    這篇文章主要為大家介紹了Spring?Security?登錄時(shí)添加圖形驗(yàn)證碼實(shí)現(xiàn)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Java文件操作之序列化與對(duì)象處理流詳解

    Java文件操作之序列化與對(duì)象處理流詳解

    這篇文章主要為大家詳細(xì)介紹了Java文件操作中的序列化與對(duì)象處理流,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-09-09
  • java 獲取路徑的各種方法(總結(jié))

    java 獲取路徑的各種方法(總結(jié))

    下面小編就為大家?guī)硪黄猨ava 獲取路徑的各種方法(總結(jié))。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • java?web實(shí)現(xiàn)簡單登錄注冊(cè)功能全過程(eclipse,mysql)

    java?web實(shí)現(xiàn)簡單登錄注冊(cè)功能全過程(eclipse,mysql)

    前期我們學(xué)習(xí)了javaweb項(xiàng)目用JDBC連接數(shù)據(jù)庫,還有數(shù)據(jù)庫的建表功能,下面這篇文章主要給大家介紹了關(guān)于java?web實(shí)現(xiàn)簡單登錄注冊(cè)功能的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Spring?cache源碼深度解析

    Spring?cache源碼深度解析

    緩存用于提升系統(tǒng)的性能,特別適用于一些對(duì)資源需求比較高的操作,下面這篇文章主要給大家介紹了關(guān)于Spring?cache源碼的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03

最新評(píng)論

汉沽区| 小金县| 随州市| 阿尔山市| 旬邑县| 顺昌县| 旺苍县| 保亭| 民县| 石首市| 垦利县| 兰溪市| 常山县| 东丰县| 怀安县| 柏乡县| 麟游县| 普定县| 华蓥市| 淮滨县| 十堰市| 鞍山市| 那曲县| 连江县| 哈巴河县| 大足县| 沛县| 乌兰县| 边坝县| 上饶县| 类乌齐县| 东明县| 西盟| 洛宁县| 于田县| 谷城县| 嘉兴市| 贺州市| 黔南| 法库县| 从化市|