【发布时间】:2016-01-04 19:35:13
【问题描述】:
我有以下代码:
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)
如何解决这个问题?
【问题讨论】:
-
为什么要使用
mapToDouble是不是想直接把它收集到一个列表中?只需使用map。你想做转换String -> Double -> double -> Double而String -> Double就足够了。 -
有什么奇怪的?你提供了一个函数
String -> Double,如果你想把它收集到一个List,它必须是一个Double。 -
Alexis C. DoubleStream 原始流吗?
标签: java java-8 java-stream collect