第一遍历Map集合
以往会使用增强for语法来遍历如:
public static void main(String[] args) {
Map 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 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 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 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 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接口的一个实现方式:
public static void main(String[] args) {
List 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 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 entry : items.entrySet()) {
System.out.println("Item : " + entry.getKey() + " Count : " + entry.getValue());
}