Is there a way to "expand" a list of objects into a bigger list with stream API?
java, java-8
Solution
It looks like you're just looking for `Stream.flatMap`, e.g.
long totalTime = list.stream()
.flatMap(rangeset -> rangeset.asRanges().stream())
.map(range -> range.upperEndpoint() - range.lowerEndpoint())
.reduce(0, (total, time) -> total + time);
Problem
Consider this example: I have a list of RangeSet that contains, for instance, timestamps. I want to get the total duration of ranges using java8 streams instead of the imperative way: ``` // "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); ``` The "expand" of course doesn't exist ; the idea is it would convert each single object in the stream to a list of other objects, and add that list to the resulting stream. Is there something similar, or another way to do it fluently?