hg: lambda/lambda/jdk: Replace explode() with two forms of flatMap: flatMap(T->Stream<U>), and flatMap(FlatMapper<T, U>)
Arul Dhesiaseelan
aruld at acm.org
Thu Feb 7 19:51:33 PST 2013
FlatMapper turns out to be pretty slick!
List<Track> allTracks = albums.stream()
.explode((Downstream<Track> downstream, Album element) ->
downstream.send(element.tracks))
.collect(toList());
to
List<Track> allTracks = albums.stream()
.flatMap((Album album) -> album.tracks.stream())
.collect(toList());
This is awesome Brian.
On Thu, Feb 7, 2013 at 9:53 AM, Brian Goetz <brian.goetz at oracle.com> wrote:
> I pushed an update along the lines of what was discussed yesterday, so
> people can take a look. Summary:
>
> - Eliminated "Downstream" abstraction
> - Added FlatMapper type (with nested specializations) in j.u.s.
> - Added five forms of Stream.flatMap
> flatMap(Function<T, Stream<U>)
> flatMap(FlatMapper<T,U>)
> flatMap(FlatMapper.To{Int,**Long,Double}<T>)
> - Added one form of flatMap for each primitive stream:
> {Int,Long,Double}Stream.**flatMap(FlatMapper.{ILD}To{**ILD})
>
> Check it out and see what you think. Commit message attached. I think
> this is an improvement.
>
> Bikeshedding on naming can continue :)
>
>
> -------- Original Message --------
> Subject: hg: lambda/lambda/jdk: Replace explode() with two forms of
> flatMap: flatMap(T->Stream<U>), and flatMap(FlatMapper<T, U>)
> Date: Thu, 07 Feb 2013 19:37:14 +0000
> From: brian.goetz at oracle.com
> To: lambda-dev at openjdk.java.net
>
> Changeset: 3aed6b4f4d42
> Author: briangoetz
> Date: 2013-02-07 14:36 -0500
> URL: http://hg.openjdk.java.net/**lambda/lambda/jdk/rev/**
> 3aed6b4f4d42<http://hg.openjdk.java.net/lambda/lambda/jdk/rev/3aed6b4f4d42>
>
> Replace explode() with two forms of flatMap: flatMap(T->Stream<U>), and
> flatMap(FlatMapper<T,U>)
>
> ! src/share/classes/java/util/**stream/DoublePipeline.java
> ! src/share/classes/java/util/**stream/DoubleStream.java
> + src/share/classes/java/util/**stream/FlatMapper.java
> ! src/share/classes/java/util/**stream/IntPipeline.java
> ! src/share/classes/java/util/**stream/IntStream.java
> ! src/share/classes/java/util/**stream/LongPipeline.java
> ! src/share/classes/java/util/**stream/LongStream.java
> ! src/share/classes/java/util/**stream/ReferencePipeline.java
> ! src/share/classes/java/util/**stream/Stream.java
> ! test-ng/bootlib/java/util/**stream/LambdaTestHelpers.java
> ! test-ng/boottests/java/util/**stream/SpinedBufferTest.java
> ! test-ng/tests/org/openjdk/**tests/java/util/stream/**ExplodeOpTest.java
> ! test-ng/tests/org/openjdk/**tests/java/util/stream/**ToArrayOpTest.java
> ! test/java/util/**LambdaUtilities.java
> ! test/java/util/stream/Stream/**EmployeeStreamTest.java
> ! test/java/util/stream/Stream/**IntStreamTest.java
> ! test/java/util/stream/Stream/**IntegerStreamTest.java
> ! test/java/util/stream/Stream/**StringBuilderStreamTest.java
> ! test/java/util/stream/Streams/**BasicTest.java
>
>
>
>
>
More information about the lambda-dev
mailing list