Phương thức forEach() là một tính năng mới của java 8. Nó là một phương thức mặc định (default method) được định nghĩa trong interface Iterable và Stream. Các lớp Collection extends từ interface Iterable có thể sử dụng vòng lặp forEach() để duyệt các phần tử.
Định nghĩa của phương thức forEach() trong Interface Iterable:
Nội dung
Ví dụ sử dụng forEach() với Map
package com.gpcoder.forEach; import java.util.HashMap; import java.util.Map; public class ForEachMapExample { public static void main(String[] args) { Map<Integer, String> hmap = new HashMap<Integer, String>(); hmap.put(1, "Java"); hmap.put(2, "Javascript"); hmap.put(3, "PHP"); hmap.put(4, "C#"); hmap.put(5, "C++"); // forEach to iterate and display each key and value pair of HashMap hmap.forEach((key, value) -> System.out.println(key + " - " + value)); } }
Output của chương trình trên như sau:
1 - Java 2 - Javascript 3 - PHP 4 - C# 5 - C++
Ví dụ sử dụng forEach() với List
package com.gpcoder.forEach; import java.util.Arrays; import java.util.List; public interface ForEachExample { public static void main(String[] args) { List<String> languages = Arrays.asList("Java", "C#", "C++", "PHP", "Javascript"); System.out.println("Iterating by passing lambda expression: "); languages.forEach(lang -> System.out.println(lang)); System.out.println("Iterating by passing method reference: "); languages.forEach(System.out::println); } }
Output của chương trình trên như sau:
Iterating by passing lambda expression: Java C# C++ PHP Javascript Iterating by passing method reference: Java C# C++ PHP Javascript
Ví dụ sử dụng forEachOrdered()
Phương thức forEachOrdered() được sử dụng để duyệt các phần tử theo thứ tự được quy định bởi Stream.
package com.gpcoder.forEach; import java.util.Arrays; import java.util.List; public class ForEachOrderedExample { public static void main(String[] args) { List<String> languages = Arrays.asList("Java", "C#", "C++", "PHP", "Javascript"); System.out.println("Iterating by passing lambda expression: "); languages.stream().forEachOrdered(lang -> System.out.println(lang)); System.out.println("Iterating by passing method reference: "); languages.stream().forEachOrdered(System.out::println); } }
Output của chương trình trên như sau:
Iterating by passing lambda expression: Java C# C++ PHP Javascript Iterating by passing method reference: Java C# C++ PHP Javascript