我一直在寻找如何将IntStream“收集”到List中从而生成一个随机的int列表,但是编译器一直在抱怨。下面的代码片段:
IntStream randIntStream = new Random().ints(1000);
List<Integer> randomInts =
randIntStream.collect(Collectors.toCollection(ArrayList::new));
编译器给出的错误:
错误:(42,49)java:接口中的方法收集 java.util.stream.IntStream不能应用于给定类型;
必填:java.util.function.Supplier,java.util.function.ObjIntConsumer,java.util.function.BiConsumer
找到:java.util.stream.Collector>原因:无法推断 类型变量R (实际和正式论点列表的长度不同)
答案 0 :(得分:3)
在将IntStream
收集到List<Integer>
之前,需要调用IntStream#boxed
将其转换为Stream<Integer>
:
IntStream randIntStream = new Random().ints(1000);
List<Integer> randomInts = randIntStream.boxed()
.collect(Collectors.toCollection(ArrayList::new));