Java 9: улучшенный Stream API
В Java 9 улучшенный Stream API добавил несколько удобных методов, упрощающих обработку потоков, и возможность использовать коллекторы для написания сложных запросов.
В Java 9 добавлено несколько методов в Stream: dropWhile, takeWhile, ofNullable, а также добавлен перегруженный метод для iterate.
Метод takeWhile
Синтаксис
default Stream<T> takeWhile(Predicate<? super T> predicate)
Метод takeWhile() принимает предикат в качестве аргумента и возвращает подмножество заданного Stream до тех пор, пока условие предиката впервые не вернёт false. Если первое значение не удовлетворяет условию предиката, будет возвращён пустой Stream.
В упорядоченном Stream метод takeWhile возвращает как можно больше элементов с начала; в неупорядоченном Stream метод takeWhile возвращает подмножество элементов с начала, удовлетворяющих требованиям Predicate.
Пример
В приведённом выше примере метод takeWhile останавливает вывод цикла, когда встречает пустую строку, и вывод выполнения:
abc
метод dropWhile
Синтаксис
default Stream<T> dropWhile(Predicate<? super T> predicate)
Метод dropWhile является противоположностью takeWhile. Он принимает предикат в качестве аргумента и возвращает подмножество заданного Stream только до тех пор, пока выражение предиката впервые не вернёт false.
Пример
В приведённом выше примере метод dropWhile начинает вывод цикла, когда встречает пустую строку, и результат выполнения:
ef
метод iterate
Синтаксис
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
Метод позволяет создавать последовательный (возможно, бесконечный) поток, используя начальное значение seed, и итеративно применять указанный метод next. Когда указанный предикат hasNext возвращает false, итерация останавливается.
Пример
Результат выполнения:
3 6 9
метод ofNullable
Синтаксис
static <T> Stream<T> ofNullable(T t)
Метод ofNullable может предотвращать NullPointerExceptions и избегать значений null путём проверки потока.
Если указанный элемент не null, метод получает элемент и создаёт поток из одного элемента; если элемент null, возвращается пустой поток.
Пример
Результат выполнения:
1 0Другие расширения
Новые возможности Java 9