With Java 8 Stream API you can collect the elements of your Stream
using one of the many methods of the java.util.Collectors
class.
To collect the elements in a java.util.List
you would do this:
list.stream().collect(Collectors.toList());
But the List
returned is a standard mutable JDK List
. Those used to Guava that want to return an immutable collection like ImmutableList
would have to do this:
list.stream().collect(Collectors.collectingAndThen(Collectors.toList(), ImmutableList::copyOf));
The guava-stream project provides java.util.stream.Collector
implementations for Guava Immutable Collections, simplifying the code to just this:
list.stream().collect(MoreCollectors.toImmutableList());
guava-stream is available on Maven Central, and requires at least Java 8.
You can add this dependency to your Maven project:
<dependency>
<groupId>me.yanaga</groupId>
<artifactId>guava-stream</artifactId>
<version>1.0</version>
</dependency>
Or if you are using Gradle:
compile "me.yanaga:guava-stream:1.0"
Currently we have Collector
implementations for ImmutableList
, ImmutableSet
, ImmutableSortedSet
, ImmutableMap
, ImmutableSortedMap
, ImmutableBiMap
, ImmutableMultiset
, ImmutableSortedMultiset
, ImmutableMultimap
, ImmutableListMultimap
, ImmutableSetMultimap
, and ImmutableTable
.