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