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

Метод iterate

Метод iterate создает поток, начиная с некоторого начального значения, и последовательно применяет к нему заданную функцию для получения следующих элементов. Первым параметром метод принимает начальное значение (seed), вторым - функцию (UnaryOperator), которая преобразует предыдущий элемент в следующий. Существует перегрузка, которая третьим параметром принимает предикат (Predicate) для ограничения длины потока.

Если использовать версию с двумя параметрами, поток будет бесконечным, поэтому его необходимо ограничивать с помощью limit или takeWhile.

Синтаксис

Stream.iterate(seed, function) Stream.iterate(seed, predicate, function)

Пример

Давайте создадим бесконечный поток чисел, начиная с 1, где каждое следующее число увеличивается на 2, и ограничим его пятью элементами:

import java.util.stream.Stream; public class Main { public static void main(String[] args) { Stream<Integer> stream = Stream.iterate(1, n -> n + 2); stream.limit(5).forEach(System.out::println); } }

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

1 3 5 7 9

Пример

Давайте используем перегрузку с тремя параметрами, чтобы ограничить поток числами меньше 20:

import java.util.stream.Stream; public class Main { public static void main(String[] args) { Stream<Integer> stream = Stream.iterate( 1, n -> n < 20, n -> n + 2 ); stream.forEach(System.out::println); } }

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

1 3 5 7 9 11 13 15 17 19

Пример

Давайте создадим поток строк, начиная с "a", где каждый следующий элемент добавляет символ "b", и соберем результат в список:

import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<String> res = Stream.iterate("a", s -> s + "b") .limit(4) .toList(); System.out.println(res); } }

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

[a, ab, abb, abbb]

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

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