第一遍歷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());
}
