将生成的流保存到ArrayList中

时间:2015-06-29 09:06:27

标签: java random arraylist java-8 java-stream

我应该做的是通过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());
}

2 个答案:

答案 0 :(得分:3)

您可以使用收藏家:

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());

答案 1 :(得分:2)

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

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