Как генерировать случайный массив ints с помощью Stream API Java 8?

Я пытаюсь создать случайный массив целых чисел, используя новый Stream API в Java 8. Но я еще не понял этот API. Поэтому мне нужна помощь. Вот мой код.

Random random = new Random();
IntStream intStream = random.ints(low, high);
int[] array =  intStream.limit(limit) // Limit amount of elements
                                    .boxed() // cast to Integer
                                    .toArray();

Но этот код возвращает массив объектов. Что с ним не так?

Ответ 1

Просто используйте Random.ints, который возвращает IntStream:

int[] array = new Random().ints(limit, low, high).toArray();

Ответ 2

Нет причин для boxed(). Просто получите Stream как int[].

int[] array = intStream.limit(limit).toArray();

Ответ 3

Вы можете сделать это, используя ThreadLocalRandom.

int[] randInts = ThreadLocalRandom.current().ints().limit(100).toArray();

Ответ 4

Чтобы генерировать случайные числа из диапазона от 0 до 350, ограничивая результат до 10 и собирать в виде списка. Позже это можно было бы придумать.

Тем не менее, нет никаких гарантий относительно типа, изменчивости, сериализуемости или безопасности потоков возвращаемого списка.

List<Object> numbers =  new Random().ints(0,350).limit(10).boxed().collect(Collectors.toList());

и получить значение int use

int[] numbers =  new Random().ints(0,350).limit(10).toArray();