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");
這是最多見的而且在大多數狀況下也是最可取的遍歷方式。在鍵值都須要時使用。性能
1 for(Map.Entry<Integer, String> entry:map.entrySet()) {
2 System.out.println("key = "+entry.getKey()+",value = "+entry.getValue());
3 }
若是隻須要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
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