Stream.takeWhile()
Берёт элементы, пока выполняется условие, и останавливается на первом неподходящем.
Доступно с: Java 9
Синтаксис
default Stream<T> takeWhile(Predicate<? super T> predicate)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| predicate | Predicate<? 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 и числовые потоки.