Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Stream.takeWhile()

Берёт элементы, пока выполняется условие, и останавливается на первом неподходящем.

Доступно с: Java 9

Синтаксис

default Stream<T> takeWhile(Predicate<? super T> predicate)

Параметры

ПараметрТипОписание
predicatePredicate<? super T>Условие продолжения.

Возвращаемое значение

Stream<T>Начало потока до первого элемента, не подходящего под условие.

Примеры

Отличие от filter():

void main() {
    List<Integer> nums = List.of(1, 2, 3, 10, 4, 5);
    IO.println(nums.stream().takeWhile(n -> n < 5).toList());
    IO.println(nums.stream().filter(n -> n < 5).toList());
}

Результат:

[1, 2, 3]
[1, 2, 3, 4]

Примечания

filter() проверяет все элементы, а takeWhile() прекращает работу на первом false. Поэтому takeWhile() подходит для бесконечных и отсортированных потоков. На неупорядоченном потоке результат непредсказуем.

См. также

  • Stream.dropWhile() — Пропускает элементы, пока выполняется условие, и отдаёт всё остальное.
  • Stream.filter() — Оставляет в потоке только элементы, подходящие под условие.
  • Stream.limit() — Обрезает поток до первых N элементов.

Вопросы и ответы по теме

В учебнике

  • Операции над потоками — Основные операции Stream API — filter, map, sorted, distinct, limit, skip, count, reduce, anyMatch, findFirst и числовые потоки.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.