Java中遍歷Map對象的4種方法

java中的全部map都實現了Map接口,如下方法適用於任何map實現(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等)。java

  1 HashMap<Integer, String> map = new HashMap<>();
  2 map.put(1, "jack");
  3 map.put(2, "tom");
  4 map.put(3, "jeffy");

方法一:在for-each循環中使用entries來遍歷

這是最多見的而且在大多數狀況下也是最可取的遍歷方式。在鍵值都須要時使用。性能

 1 for(Map.Entry<Integer, String> entry:map.entrySet()) {
2 System.out.println("key = "+entry.getKey()+",value = "+entry.getValue());
3 }
若是你遍歷的是一個空的map對象,for-each循環將拋出NullPointerException,所以在遍歷前你老是應該檢查是否爲空引用。

方法二:在for-each循環中遍歷keys或values

若是隻須要map中的鍵或者值,你能夠經過keySet或values來實現遍歷,而不是用entrySet。spa

 1 for(Integer key:map.keySet()) {
2 System.out.println("key = "+key);
3 }
4 for(String value:map.values()) {
5 System.out.println("value = "+value);
6 }

該方法比entrySet遍歷在性能上稍好(快了10%),並且代碼更加乾淨。code

方法三:使用Iterator遍歷

 1 Iterator<Map.Entry<Integer, String>> irs = map.entrySet().iterator();
2 while(irs.hasNext()) {
3 Map.Entry<Integer, String> entry = irs.next();
4 System.out.println("key = "+entry.getKey()+",value = "+entry.getValue());
5 }

方法四: 經過鍵找值遍歷(效率低)

 1 Map<Integer, String> map2 = map;
2 for(Integer key:map2.keySet()) {
3 String value = map2.get(key);
4 System.out.println("key = "+key+",value = "+value);
5 }

由於經過鍵取值是很是耗時的操做,因此這種方法至關慢且無效率的。對象

總結:

若是僅須要鍵(keys)或值(values)使用方法二。若是你使用的語言版本低於java 5,或是打算在遍歷時刪除entries,必須使用方法三。不然使用方法一(鍵值都要)。blog

相關文章
相關標籤/搜索