gpt4 book ai didi

java - 如何将 Stream> flatMapToLong?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:55:17 28 4
gpt4 key购买 nike

我有这个方法:

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 行给出了这个错误

Type mismatch: cannot convert from Stream< Long > to LongStream

当我把它改成

flatMapToLong(x -> x)

我收到这个错误

Type mismatch: cannot convert from List< Long > to 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));
}

最佳答案

您传递给 flatMapToLongFunction 需要返回一个 LongStream :

return list
.stream()
.map(l -> toDigits(l))
.flatMapToLong(x -> x.stream().mapToLong(l -> l))
.sum();

如果需要,您也可以拆分 flatMapToLong:

return list
.stream()
.map(ClassOfToDigits::toDigits)
.flatMap(List::stream)
.mapToLong(Long::longValue)
.sum();

关于java - 如何将 Stream<List<Long>> flatMapToLong?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26970652/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com