gst*_*low 12 java collect java-8 java-stream
我有以下代码:
Stream.of("1,2,3,4".split(",")).mapToDouble(Double::valueOf).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
我想回来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)
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
Tun*_*aki 26
你可以用boxed().这将a DoubleStream(原始双精度流,返回者mapToDouble)映射到a Stream<Double>.
Stream.of("1,2,3,4".split(",")).mapToDouble(Double::parseDouble).boxed().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
请注意,我更改Double::valueOf为Double::parseDouble:这可以防止Double返回的by Double.valueOf取消装入基元double.
但是你为什么mapToDouble要开始使用?你可以map像这样使用:
Stream.of("1,2,3,4".split(",")).map(Double::valueOf).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7104 次 |
| 最近记录: |