【发布时间】:2015-01-14 05:52:13
【问题描述】:
我有这个方法:
public static long sumDigits(final List<Long> list) {
return list
.stream()
.map(l -> toDigits(l))
.flatMapToLong(x -> x.stream())
.sum()
}
toDigits 有这个签名:
List<Long> toDigits(long l)
在 flatMapToLong 线上它给出了这个错误
类型不匹配:无法从 Stream 转换为 LongStream
当我把它改成
flatMapToLong(x -> x)
我收到此错误
类型不匹配:无法从 List 转换为 LongStream
唯一有效的就是这个
public static long sumDigits(final List<Long> list) {
return list
.stream()
.map(l -> toDigits(l))
.flatMap(x -> x.stream())
.reduce(0L, (accumulator, add) -> Math.addExact(accumulator, add));
}
【问题讨论】:
标签: java collections lambda java-stream flatmap