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

Метод generate

Метод generate класса Stream создает бесконечный последовательный поток, элементы которого вычисляются переданным Supplier. В первый параметр мы передаем функцию-поставщик, которая не принимает аргументов и возвращает очередной элемент потока. Метод возвращает новый поток типа Stream<T>. Поскольку поток бесконечный, его обязательно нужно ограничивать с помощью limit или другого промежуточного оператора.

Синтаксис

Stream.generate(Supplier<T> supplier)

Пример

Давайте создадим поток из пяти одинаковых элементов и соберем его в список:

import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<String> res = Stream.generate(() -> "abcde") .limit(5) .toList(); System.out.println(res); } }

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

["abcde", "abcde", "abcde", "abcde", "abcde"]

Пример

Давайте создадим поток из случайных чисел и ограничим его тремя элементами:

import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] args) { List<Double> res = Stream.generate(Math::random) .limit(3) .toList(); System.out.println(res); } }

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

[0.123456789, 0.987654321, 0.456789123]

Пример

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

import java.util.List; import java.util.stream.Stream; public class Main { public static void main(String[] args) { int[] counter = {1}; List<Integer> res = Stream.generate(() -> counter[0]++) .limit(5) .toList(); System.out.println(res); } }

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

[1, 2, 3, 4, 5]

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

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