有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何收集要列出的DoubleStream

我有以下代码:

Stream.of("1,2,3,4".split(",")).mapToDouble(Double::valueOf).collect(Collectors.toList());

我想返回List<Double>

这段代码无法编译

我看到了错误:

Error:(57, 69) java: method collect in interface java.util.stream.DoubleStream cannot be applied to given types;
  required: java.util.function.Supplier<R>,java.util.function.ObjDoubleConsumer<R>,java.util.function.BiConsumer<R,R>
  found: java.util.stream.Collector<java.lang.Object,capture#1 of ?,java.util.List<java.lang.Object>>
  reason: cannot infer type-variable(s) R
    (actual and formal argument lists differ in length)

如何解决这个问题


共 (1) 个答案

  1. # 1 楼答案

    您可以使用^{}。这将一个DoubleStream(原语双元流,由^{}返回)映射到一个Stream<Double>

    Stream.of("1,2,3,4".split(",")).mapToDouble(Double::parseDouble).boxed().collect(Collectors.toList());
    

    注意,我将^{}更改为^{}:这可以防止Double.valueOf返回的Double被解除绑定到原语double

    但是,为什么要从mapToDouble开始呢?您可以这样使用map

    Stream.of("1,2,3,4".split(",")).map(Double::valueOf).collect(Collectors.toList());