Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách sử dụng phương thức Optional.stream() trong Java 9

Trong Java 9, phương thức stream() được thêm vào lớp Optional để cải thiện chức năng. Phương thức stream() dùng để chuyển đổi Stream các phần tử Optional thành Stream các phần tử có giá trị hiện diện. Nếu Optional chứa giá trị, trả về Stream chứa giá trị đó. Ngược lại, trả về stream rỗng (empty stream).

Cú pháp

public Stream<T> stream()

Ví dụ so sánh Java 8 và Java 9

import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamMethodTest {
    public static void main(String[] args) {
        List<Optional<String>> list = Arrays.asList(
            Optional.empty(),
            Optional.of("TutorialsPoint"),
            Optional.empty(),
            Optional.of("Tutorix"));
        
        // Cách Java 8: dùng flatMap với điều kiện
        List<String> filteredListJava8 = list.stream()
            .flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty())
            .collect(Collectors.toList());
        
        // Cách Java 9: dùng Optional::stream
        List<String> filteredListJava9 = list.stream()
            .flatMap(Optional::stream)
            .collect(Collectors.toList());
        
        System.out.println(filteredListJava8);
        System.out.println(filteredListJava9);
    }
}

Kết quả

[TutorialsPoint, Tutorix]
[TutorialsPoint, Tutorix]

Phương thức Optional::stream trả về stream có 1 hoặc 0 phần tử tùy dữ liệu có hiện diện hay không, giúp code ngắn gọn hơn so với Java 8.