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