【问题标题】:Cannot collect Random int stream into a List collection [duplicate]无法将随机 int 流收集到列表集合中 [重复]
【发布时间】: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


【解决方案1】:

在您将IntStream 收集到List&lt;Integer&gt; 之前,您需要调用IntStream#boxed 将其转换为Stream&lt;Integer&gt;

IntStream randIntStream = new Random().ints(1000);
List<Integer> randomInts = randIntStream.boxed()
    .collect(Collectors.toCollection(ArrayList::new));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多