【发布时间】:2015-06-11 15:36:29
【问题描述】:
我有以下代码:
List<Long> list = new ArrayList<>();
list.add(4L);
list.add(92L);
list.add(100L);
List<Long> newList = list.stream().map(i -> i * 2.5)
.mapToLong(Double::doubleToRawLongBits)
.collect(Collectors.toList());
这段代码不起作用,编译错误是:
接口
java.util.stream.LongStream中的方法collect不能应用于给定类型;
必填:java.util.function.Supplier<R>,java.util.function.ObjLongConsumer<R>,java.util.function.BiConsumer<R,R>
找到:java.util.stream.Collector<java.lang.Object,capture#1 of ?,java.util.List<java.lang.Object>>
原因:无法推断类型变量R(实际参数列表和形式参数列表的长度不同)
我已经尝试了很多收集器的用法,但我仍然无法使其工作。 我做错了什么?
【问题讨论】:
-
您认为
Double.doubleToRawLongBits到底是做什么的?我想你不知道它的作用...... -
乘以2.5后变成DoubleStream。
-
@aldrael:不正确。它变成了
Stream<Double>,这不是一回事。 -
@LouisWasserman 你能告诉我更多吗?
标签: java java-8 java-stream