Stream.generate()
Создаёт бесконечный поток из значений функции-поставщика.
Доступно с: Java 8
Синтаксис
static <T> Stream<T> generate(Supplier<? extends T> s)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| s | Supplier<? 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 — источник, промежуточные и завершающие операции, создание потоков, ленивые вычисления и одноразовость потока.