将生成的流保存到 ArrayList 中

Saving a generated stream into an ArrayList

我应该做的是通过 stream.generate 创建一个随机数的 ArrayList。下面的代码是我尝试将其保存到 ArrayList 中的尝试,但它的类型为 "object"。我想我必须先以某种方式将它映射到 int 中,但我不知道该怎么做。代码现在不起作用。

public ArrayList<Integer> createRandomList(ArrayList<Integer> list, int amount) {
     ArrayList<Integer> a = Arrays.asList(Stream.generate(new Supplier<Integer>() {
                    @Override
                    public Integer get() {
                        Random rnd = new Random();
                        return rnd.nextInt(100000);
                    }
                }).limit(amount).mapToInt.toArray());
}

您可以使用收集器:

return Stream.generate (() -> new Random().nextInt(100000))
             .limit(amount)
             .collect (Collectors.toList());

虽然这会产生 List<Integer>,但不一定是 ArrayList<Integer>

虽然创建单个 Random 实例更有意义:

final Random rnd = new Random();
return Stream.generate (() -> rnd.nextInt(100000))
             .limit(amount)
             .collect (Collectors.toList());

您可以使用 ints(...), box them using boxed() 直接从 Random 对象创建整数流,并使用收集器存储结果:

return new Random().ints(amount, 0, 100000)
                   .boxed()
                   .collect(Collectors.toCollection(ArrayList::new));