第一遍歷Map集合
以往會使用增強for語法來遍歷如:
public static void main(String[] args) { 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 (Entry<String, Integer> entry : items.entrySet()) { System.out.println(entry.getKey() + " : " + entry.getValue()); } }
在控制台輸出:
A : 10 B : 20 C : 30 D : 40 E : 50 F : 60
其中使用Java8 forEach + lambda表達式來循環一個列表如下:
public static void main(String[] args) { 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); items.forEach((k,v) -> { System.out.println(k + ":" + v); if("E".equals(k)){ System.out.println("Hello E"); } }); }
打印結果為:
A:10 B:20 C:30 D:40 E:50 Hello E F:60
其中forEach方法接收的參數的源碼如下:
第二遍歷List集合:
public static void main(String[] args) { 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); } }
打印結果如下:
A B C D E
其中使用java8 forEach+lambda表達式來實現如下:
public static void main(String[] args) { 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); } }); }
打印結果如下:
A B C D E C
其中forEach方法接收的參數的源碼如下:
也可以使用System.out::println來輸出:System.out::println
這段代碼其實就是Consumer<T>
接口的一個實現方式:
public static void main(String[] args) { List<String> items = new ArrayList<>(); items.add("A"); items.add("B"); items.add("C"); items.add("D"); items.add("E"); items.forEach(System.out::println); // 是items.forEach(item -> { System.out.println(item) })這個用法的縮寫形式 }
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());
}