程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java遍歷Map對象的四種方法

Java遍歷Map對象的四種方法

編輯:關於JAVA

Java遍歷Map對象的四種方法。本站提示廣大學習愛好者:(Java遍歷Map對象的四種方法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java遍歷Map對象的四種方法正文


關於java中遍歷map詳細哪四種方法,請看下文詳解吧。

方法一 這是最多見的而且在年夜多半情形下也是最可取的遍歷方法。在鍵值都須要時應用。

 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輪回中遍歷keys或values。

假如只須要map中的鍵或許值,你可以經由過程keySet或values來完成遍歷,而不是用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上運用異樣的辦法。

該種方法看起來冗余卻有其長處地點。起首,在老版本java中這是唯一遍歷map的方法。另外一個利益是,你可以在遍用時挪用iterator.remove()來刪除entries,另兩個辦法則不克不及。依據javadoc的解釋,假如在for-each遍歷中測驗考試應用此辦法,成果是弗成猜測的。

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

辦法4、經由過程鍵找值遍歷(效力低)

 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); 

作為辦法一的替換,這個代碼看上去加倍清潔;但現實上它相當慢且有效率。由於從鍵取值是耗時的操作(與辦法一比擬,在分歧的Map完成中該辦法慢了20%~200%)。假如你裝置了FindBugs,它會做出檢討並正告你關於哪些是低效力的遍歷。所以盡可能防止應用。

總結

假如僅須要鍵(keys)或值(values)應用辦法二。假如你應用的說話版本低於java 5,或是盤算在遍用時刪除entries,必需應用辦法三。不然應用辦法一(鍵值都要)。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved