long totalTime -6ren">
gpt4 book ai didi

java - 有没有办法将 "expand"对象列表转换为带有流 API 的更大列表?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:05:52 27 4
gpt4 key购买 nike

考虑这个例子:我有一个 RangeSet 列表,其中包含例如时间戳。我想使用 java8 流而不是命令式方式获取范围的总持续时间:

// "list" is List<RangeSet<Long>>

long totalTime = list.stream()
.expand(rangeset -> rangeset.asRanges())
.map(range -> range.upperEndpoint() - range.lowerEndpoint())
.reduce(0, (total, time) -> total + time);

“扩展”当然不存在;这个想法是它将流中的每个单个对象转换为其他对象的列表,并将该列表添加到结果流中。

是否有类似的东西或其他方法可以流利地做到这一点?

最佳答案

看起来你只是在寻找Stream.flatMap ,例如

long totalTime = list.stream()
.flatMap(rangeset -> rangeset.asRanges().stream())
.map(range -> range.upperEndpoint() - range.lowerEndpoint())
.reduce(0, (total, time) -> total + time);

关于java - 有没有办法将 "expand"对象列表转换为带有流 API 的更大列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28740786/

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