forEach() trong java 8 – VietTuts

Phương thức forEach trong java 8 là một tính năng mới của java 8. Nó được định nghĩa trong giao diện Iterable và Stream. Nó là một phương thức mặc định được định nghĩa trong giao diện Iterable. Các lớp Collection extends giao diện 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 Iterable Interface

default void forEach(Consumer<super T> action)

Ví dụ về forEach() trong java

Ví dụ 1: duyệt các phần tử của Collection bằng cách sử dụng biểu thức lambda.

package vn.viettuts.java8;

import java.util.ArrayList;
import java.util.List;

public class ForEachExample1 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("Java");
        list.add("PHP");
        list.add("C++");
        list.add("Python");

        list.forEach((element) -> {
            System.out.println(element);
        });
    }
}

Kết quả:

Java
PHP
C++
Python

Ví dụ 2: duyệt các phần tử của Collection bằng cách sử dụng phương thức tham chiếu.

package vn.viettuts.java8;

import java.util.ArrayList;
import java.util.List;

public class ForEachExample2 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("Java");
        list.add("PHP");
        list.add("C++");
        list.add("Python");

        // duyệt các phần tử của mảng bằng cách truyền phương thức tham chiếu
        list.forEach(System.out::println);
    }
}

Kết quả:

Java
PHP
C++
Python

Phương thức forEachOrdered() của lớp Stream trong java

Cùng với phương thức forEach(), Java cung cấp thêm một phương thức forEachOrdered(). Nó được sử dụng để duyệt các phần tử theo thứ tự được quy định bởi Stream.

package vn.viettuts.java8;

import java.util.ArrayList;
import java.util.List;

public class ForEachOrderedExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("Java");
        list.add("PHP");
        list.add("C++");
        list.add("Python");
                
        System.out.println("duyệt các phần tử của mảng bằng cách "
                + "sử dụng biểu thức lambda: ");
        list.stream().forEachOrdered(p->System.out.println(p));
        
        System.out.println("duyệt các phần tử của mảng bằng cách "
                + "truyền phương thức tham chiếu: ");
        list.stream().forEachOrdered(System.out::println);
    }
}

Kết quả:

duyệt các phần tử của mảng bằng cách sử dụng biểu thức lambda: 
Java
PHP
C++
Python
duyệt các phần tử của mảng bằng cách truyền phương thức tham chiếu: 
Java
PHP
C++
Python