JDK版本:java8。
說明:jdk8新增了forEach方法。其實常用的就4、5種方法,這裏羅列10種,是爲了讓大家更明晰,遍歷的邏輯和方式。
Map<String,Integer> map=new HashMap<>(); map.put("劉賀",178); map.put("王月",164); //for-keySet for(String key:map.keySet()){//keySet() System.out.println("①key : "+key+" value : " +map.get(key)); } //for-entrySet for(Map.Entry<String,Integer > entry:map.entrySet()){ System.out.println("②key : " +entry.getKey() +" value : "+entry.getValue()); } //for-values for(Integer v:map.values()){//values() System.out.println("③value : "+ v); } //iterator-entrySet Iterator<Map.Entry<String, Integer>> iterator1=map.entrySet().iterator(); while(iterator1.hasNext()){ Map.Entry<String, Integer> entry = iterator1.next(); System.out.println("④key : "+entry.getKey()+" value : " +entry.getValue()); } //iterator-keySet Iterator<String> iterator2=map.keySet().iterator(); while(iterator2.hasNext()){ String entry = iterator2.next(); System.out.println("⑤key : "+entry+" value : " +map.get(entry)); } //iterator-values Iterator<Integer> iterator3=map.values().iterator(); while(iterator3.hasNext()){ Integer entry = iterator3.next(); System.out.println("⑥value : " +entry); } //forEach-map map.forEach((k,v)->System.out.println("⑦key : " + k + " value : " + v)); //forEach-entrySet Set<Map.Entry<String, Integer>> set2=map.entrySet(); set2.forEach(item-> System.out.println("⑧key : " + item.getKey() + " value : " + item.getValue())); //forEach-keySet Set<String> set1=map.keySet(); set1.forEach(item-> System.out.println("⑨key : " + item + " value : " + map.get(item))); //forEach-values Collection<Integer> set3=map.values(); set3.forEach(item-> System.out.println("⑩value : " + item ));
總結:遍歷map無非就是從keyset(鍵集合),values(值集合),entrySet(鍵值對集合)這三個集合入手。而遍歷集合的方式又有三種(增強for、iterator、forEach),3*3=9種。此外forEach額外支持直接遍歷map的方式,因此3*3+1=10種。注意:普通for和Stream流對象不考慮。