Java8 forEach常用場景程式碼例項
阿新 • • 發佈:2020-09-30
forEach and Map
1.1 通常這樣遍歷一個Map
Map<String,Integer> items = new HashMap<>(); items.put("A",10); items.put("B",20); items.put("C",30); items.put("D",40); items.put("E",50); items.put("F",60); for (Map.Entry<String,Integer> entry : items.entrySet()) { System.out.println("Item : " + entry.getKey() + " Count : " + entry.getValue()); }
1.2 在java8中你可以使用 foreach + 拉姆達表示式遍歷
Map<String,60); items.forEach((k,v)->System.out.println("Item : " + k + " Count : " + v)); items.forEach((k,v)->{ System.out.println("Item : " + k + " Count : " + v); if("E".equals(k)){ System.out.println("Hello E"); } });
forEach and List
2.1 通常這樣遍歷一個List.
List<String> items = new ArrayList<>(); items.add("A"); items.add("B"); items.add("C"); items.add("D"); items.add("E"); for(String item : items){ System.out.println(item); }
2.2 在java8中你可以使用 foreach + 拉姆達表示式 或者 method reference(方法引用)
List<String> items = new ArrayList<>(); items.add("A"); items.add("B"); items.add("C"); items.add("D"); items.add("E"); //lambda //Output : A,B,C,D,E items.forEach(item->System.out.println(item)); //Output : C items.forEach(item->{ if("C".equals(item)){ System.out.println(item); } }); //method reference //Output : A,E items.forEach(System.out::println); //Stream and filter //Output : B items.stream() .filter(s->s.contains("B")) .forEach(System.out::println);
關於效率問題,網上有大神進行測試後總結出:最快的是增強for迴圈
最終結論
普通(數量級10W以下,非並行)遍歷一個集合(List、Set、Map)如果在意效率,不要使用java8的foreach,雖然它很方便很優雅
任何時候使用增強for迴圈是你不二的選擇
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。