Map遍历的10种方式

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章