考虑这个例子:我有一个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);
Run Code Online (Sandbox Code Playgroud)
"扩展"当然不存在; 我们的想法是将流中的每个单个对象转换为其他对象的列表,并将该列表添加到结果流中.
是否有类似的东西或其他方式流利地做到这一点?
Jon*_*eet 16
看起来你只是在寻找Stream.flatMap,例如
long totalTime = list.stream()
.flatMap(rangeset -> rangeset.asRanges().stream())
.map(range -> range.upperEndpoint() - range.lowerEndpoint())
.reduce(0, (total, time) -> total + time);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3630 次 |
| 最近记录: |