Метод Stream#generate(Supplier)
принимает аргумент Supplier
. Однако вы передаете результат вызова #nextElement()
напрямую, то есть int
. Простое исправление заключается в использовании:
Stream.generate(() -> nextElement())...
() -> nextElement()
является лямбда-выражением и является реализацией Supplier<Integer>
. Он также может быть записан в виде ссылки на метод : EnclosingClass::nextElement
.
При этом существует более простой способ генерации потока случайных чисел с использованием Random#ints(long,int,int)
, который:
Возвращает поток, производящий заданное число streamSize числа псевдослучайных значений типа int, каждое из которых соответствует заданному источнику (включительно) и ограничено (исключено).
Вот пример, который сгенерирует 200 случайных чисел в диапазоне [0,100):
int[] array = new Random().ints(200, 0, 100).toArray();
Преимущество приведенного выше также заключается в использовании IntStream
, который позволяет использовать int
вместо Integer
.