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

Các tính năng mới thêm vào Stream API trong Java 9

Trong Java 9, Oracle đã thêm 4 phương thức mới hữu ích vào Stream API. Đó là iterate(), ofNullable(), takeWhile() và dropWhile().

iterate()

iterate() có thể dùng như phiên bản stream thay thế cho vòng lặp for truyền thống. Phương thức này được cải tiến bằng cách thêm tham số khác: interface Predicate cho phép dừng các số vô hạn dựa trên điều kiện định nghĩa với Predicate.

Ví dụ

import java.util.stream.Stream;

public class StreamIterateMethodTest {
    public static void main(String[] args) {
        Stream.iterate(1, i -> i < 5, i -> i + 1).forEach(System.out::println); // iterate()
    }
}

Kết quả

1
2
3
4

ofNullable()

Phương thức ofNullable() trả về đối tượng stream của phần tử nếu nó không null. Ngược lại, trả về stream rỗng (empty stream).

Ví dụ

import java.util.stream.Stream;

public class StreamOfNullableMethodTest {
    public static void main(String[] args) {
        String str = "TutorialsPoint";
        Stream.ofNullable(str).forEach(System.out::println); // ofNullable() method
    }
}

Kết quả

TutorialsPoint

takeWhile()

Tham số truyền cho takeWhile() là interface Predicate. Phương thức này lấy phần tử của stream object từ trái sang phải cho đến khi điều kiện của đối tượng Predicate không còn thỏa mãn.

Ví dụ

import java.util.stream.Stream;

public class StreamTakeWhileMethodTest {
    public static void main(String[] args) {
        Stream.of(1, 2, 3, 4, 5)
            .takeWhile(i -> i < 5) // takeWhile() method
            .forEach(System.out::println);
    }
}

Kết quả

1
2
3
4

dropWhile()

Tham số truyền cho dropWhile() cũng là interface Predicate. Nó ngược lại với takeWhile(). Phương thức này đi qua từng phần tử trong stream object từ trái sang phải và bỏ qua tất cả phần tử thỏa mãn điều kiện. Khi điều kiện không còn thỏa mãn, nó lấy tất cả phần tử còn lại để trả về.

Ví dụ

import java.util.stream.Stream;

public class StreamDropWhileMethodTest {
    public static void main(String[] args) {
        Stream.of(3, 2, 1, 4, 6, 7, 8, 9, 10)
            .dropWhile(i -> i < 5) // dropWhile() method
            .forEach(System.out::println);
    }
}

Kết quả

6
7
8
9
10