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流对象不考虑。