Java8新特性之使用forEach遍历List and Map


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM