РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
481 of 1163 menu

Метод takeWhile

Метод takeWhile класса Stream возвращает новый поток, который содержит элементы исходного потока до тех пор, пока они удовлетворяют заданному условию. Как только встречается первый элемент, не удовлетворяющий условию, поток завершается, и все последующие элементы отбрасываются. В параметр метода мы передаем предикат - функцию, которая принимает элемент и возвращает boolean. Метод является ленивой промежуточной операцией.

Синтаксис

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

Пример

Давайте возьмем из потока числа до первого, которое не меньше 3:

import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<Integer> list = List.of(1, 2, 3, 4, 5); Stream<Integer> res = list.stream() .takeWhile(n -> n < 3); System.out.println(res.toList()); } }

Результат выполнения кода:

[1, 2]

Пример

Давайте возьмем строки из потока до первой, длина которой меньше 3:

import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<String> list = List.of("abcde", "12345", "ab", "cde"); Stream<String> res = list.stream() .takeWhile(s -> s.length() >= 3); System.out.println(res.toList()); } }

Результат выполнения кода:

[abcde, 12345]

Пример

Важно понимать, что метод останавливается на первом элементе, не прошедшем проверку, даже если дальше снова есть подходящие элементы. В следующем примере первые три числа меньше 3, но четвертое число 5 прерывает поток, и последнее число 2 уже не попадает в результат:

import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<Integer> list = List.of(1, 2, 3, 5, 2); Stream<Integer> res = list.stream() .takeWhile(n -> n < 4); System.out.println(res.toList()); } }

Результат выполнения кода:

[1, 2, 3]

Смотрите также

  • метод dropWhile,
    который отбрасывает элементы до первого неподходящего
  • метод filter,
    который отбирает элементы по условию
  • метод limit,
    который ограничивает количество элементов
  • класс Stream,
    который представляет поток элементов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить