Example usage for java.util.stream Collector characteristics

List of usage examples for java.util.stream Collector characteristics

Introduction

In this page you can find the example usage for java.util.stream Collector characteristics.

Prototype

Set<Characteristics> characteristics();

Source Link

Document

Returns a Set of Collector.Characteristics indicating the characteristics of this Collector.

Usage

From source file:com.github.steveash.guavate.Guavate.java

/**
 * Collector used at the end of a stream to build an immutable multimap.
 * <p>/*from   w  w  w .j ava2  s. co m*/
 * A collector is used to gather data at the end of a stream operation.
 * This method returns a collector allowing streams to be gathered into
 * an {@link ImmutableSetMultimap}.
 * <p>
 * This returns a multimap by converting each stream element to a key and value.
 * Stream elements may be converted to the same key, with the values forming a multimap set.
 * @param <T> the type of the stream elements
 * @param <K> the type of the keys in the result multimap
 * @param <V> the type of the values in the result multimap
 * @param keyExtractor function to produce keys from stream elements
 * @param valueExtractor function to produce values from stream elements
 * @return the immutable multimap collector
 */
public static <T, K, V> Collector<T, ?, ImmutableSetMultimap<K, V>> toImmutableSetMultimap(
        Function<? super T, ? extends K> keyExtractor, Function<? super T, ? extends V> valueExtractor) {

    return Collector.of(ImmutableSetMultimap.Builder<K, V>::new,
            (builder, val) -> builder.put(keyExtractor.apply(val), valueExtractor.apply(val)),
            (l, r) -> l.putAll(r.build()), ImmutableSetMultimap.Builder<K, V>::build,
            Collector.Characteristics.UNORDERED);
}

From source file:org.briljantframework.data.Collectors.java

public static <T, A, R, F> Collector<T, ?, F> withFinisher(Collector<T, A, R> collector,
        Function<R, F> finisher) {
    Function<A, R> f = collector.finisher();

    Set<Collector.Characteristics> characteristics = collector.characteristics();
    Collector.Characteristics[] empty = new Collector.Characteristics[characteristics.size()];
    return Collector.of(collector.supplier(), collector.accumulator(), collector.combiner(),
            f.andThen(finisher), characteristics.toArray(empty));
}

From source file:org.briljantframework.data.Collectors.java

public static <T> Collector<T, ?, Vector> valueCounts() {
    return Collector.of(HashMap::new, (map, t) -> map.compute(t, (v, c) -> c == null ? 1 : c + 1),
            new BinaryOperator<HashMap<T, Integer>>() {
                @Override//ww w.  ja v a2  s . co  m
                public HashMap<T, Integer> apply(HashMap<T, Integer> left, HashMap<T, Integer> right) {
                    right.forEach((k, v) -> left.merge(k, v, (Integer o, Integer n) -> o == null ? n : o + n));
                    return left;
                }
            }, (map) -> {
                Vector.Builder b = new TypeInferenceVectorBuilder();
                for (Map.Entry<T, Integer> e : map.entrySet()) {
                    b.set(e.getKey(), e.getValue());
                }
                return b.build();
            }, Collector.Characteristics.UNORDERED);
}

From source file:org.briljantframework.data.Collectors.java

public static <T> Collector<T, ?, T> mode() {
    return Collector.of(HashMap::new, (HashMap<T, Integer> map, T value) -> map.compute(value,
            (key, count) -> count == null ? 1 : count + 1), (left, right) -> {
                right.forEach((k, v) -> left.merge(k, v, (Integer o, Integer n) -> o == null ? n : o + n));
                return left;
            }, (HashMap<T, Integer> map) -> {
                int max = 0;
                T value = null;//from   ww  w  .ja v a  2s.  c  o  m
                for (Map.Entry<T, Integer> k : map.entrySet()) {
                    if (k.getValue() > max) {
                        value = k.getKey();
                    }
                }
                return value;
            }, Collector.Characteristics.UNORDERED);
}

From source file:org.decampo.examples.collections.MoreCollectors.java

public static <T, K, V> Collector<T, SetValuedMap<K, V>, SetValuedMap<K, V>> toSetValuedMap(
        Function<T, K> keyMapper, Function<T, V> valueMapper) {

    return Collector.of(HashSetValuedHashMap::new,
            (map, t) -> map.put(keyMapper.apply(t), valueMapper.apply(t)), (map1, map2) -> {
                map1.putAll(map2);// w  w  w .j  a  v  a 2  s .c  o  m
                return map1;
            }, Collector.Characteristics.IDENTITY_FINISH, Collector.Characteristics.UNORDERED);
}