Encodera

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

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

Справочник Java

Stream.generate()

Создаёт бесконечный поток из значений функции-поставщика.

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

Синтаксис

static <T> Stream<T> generate(Supplier<? extends T> s)

Параметры

ПараметрТипОписание
sSupplier<? extends T>Функция без аргументов, которая выдаёт каждый следующий элемент.

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

Stream<T>Бесконечный поток.

Примеры

Повторяющееся значение и случайные числа с фиксированным зерном:

void main() {
    IO.println(Stream.generate(() -> "ab").limit(3).collect(Collectors.joining()));
    Random rnd = new Random(7);
    IO.println(Stream.generate(() -> rnd.nextInt(10)).limit(5).toList());
}

Результат:

ababab
[6, 4, 5, 4, 0]

Примечания

Поток бесконечный: без limit() завершающая операция никогда не закончится. В отличие от iterate(), элементы не зависят друг от друга.

См. также

  • Stream.iterate() — Создаёт поток, где каждый элемент вычисляется из предыдущего.
  • Stream.limit() — Обрезает поток до первых N элементов.
  • Supplier — Поставщик: функция без аргументов, которая возвращает значение.

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

В учебнике

  • Что такое поток данных — Stream API в Java — источник, промежуточные и завершающие операции, создание потоков, ленивые вычисления и одноразовость потока.

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

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