"flat" map method
Brian Goetz
brian.goetz at oracle.com
Wed Jun 22 12:52:27 PDT 2011
This can be implemented by:
List<T> foo = ...
Mapper<T, List<U>> mapper = ...
Reducer<List<U>, List<U>> listJoiner = ...
List<U> flattened =
foo.map(mapper)
.reduce(Collections.emptyList(), listJoiner);
If the intermediate form is a collection that admits an efficient union
operation, there's no reason this can't be efficient as well.
On 6/22/2011 3:43 PM, Stefan Springer wrote:
> The "classical" map method on a Collection<T> receives a closure { T => U }
> giving a Collection<U>. What I am missing in all discussions is some kind of
> a "flat" map method receiving a closure { T => Collection<T> } resulting in
> a concatenation Collection<T> of all individual Collection<T> results for
> each member of the original Collection<T>. I know that could be realized by
> combining the map method with a reduce method, but for easy coding I think
> such a "flatMap" method would be very nice. I know this pattern from the
> XML/SGML transformation language MetaMorphosis where such a "flattening" is
> very appropriate. Would vote for adding such a method for collections in
> Java 8.
>
More information about the lambda-dev
mailing list