package io.divolte.server; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.ImmutableSet; import java.util.Map; import java.util.stream.Collector; public final class MoreCollectors { private MoreCollectors() { // Prevent external instantiation. } public static <T> Collector<T, ImmutableList.Builder<T>, ImmutableList<T>> toImmutableList() { return Collector.of(ImmutableList.Builder<T>::new, ImmutableList.Builder<T>::add, (l, r) -> l.addAll(r.build()), ImmutableList.Builder::build); } public static <T> Collector<T, ImmutableSet.Builder<T>, ImmutableSet<T>> toImmutableSet() { return Collector.of(ImmutableSet.Builder<T>::new, ImmutableSet.Builder<T>::add, (l, r) -> l.addAll(r.build()), ImmutableSet.Builder::build); } public static <K,V> Collector<Map.Entry<K,V>, ImmutableMap.Builder<K,V>, ImmutableMap<K,V>> toImmutableMap() { return Collector.of(ImmutableMap.Builder<K,V>::new, ImmutableMap.Builder<K,V>::put, (l, r) -> l.putAll(r.build()), ImmutableMap.Builder::build); } public static <K,V> Collector<Map.Entry<K,V>, ImmutableMultimap.Builder<K,V>, ImmutableMultimap<K,V>> toImmutableMultimap() { return Collector.of(ImmutableMultimap.Builder<K,V>::new, ImmutableMultimap.Builder<K,V>::put, (l, r) -> l.putAll(r.build()), ImmutableMultimap.Builder::build); } }