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流對象不考慮。

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