【发布时间】:2019-04-07 15:21:09
【问题描述】:
我一直在寻找如何将 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 (实际参数列表和形式参数列表的长度不同)
【问题讨论】:
-
你必须把它装箱
.boxed() -
或
ThreadLocalRandom.current() .ints(1000) .collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
标签: java collections java-8 java-stream