Collectors是一个工具类,提供了一系列生成Collector接口的方法,这些方法可以分为两大类:归约汇总、分组分区。
求平均值
<T> Collector<T, ?, Double> averagingDouble(ToDoubleFunction<? super T> mapper);
<T> Collector<T, ?, Double> averagingInt(ToIntFunction<? super T> mapper);
<T> Collector<T, ?, Double> averagingLong(ToLongFunction<? super T> mapper);
统计数量
<T> Collector<T, ?, Long> counting();
求最大值和最小值
<T> Collector<T, ?, Optional<T>> maxBy(Comparator<? super T> comparator);
<T> Collector<T, ?, Optional<T>> minBy(Comparator<? super T> comparator);
求总数
<T> Collector<T, ?, Double> summingDouble(ToDoubleFunction<? super T> mapper);
<T> Collector<T, ?, Integer> summingInt(ToIntFunction<? super T> mapper);
<T> Collector<T, ?, Long> summingLong(ToLongFunction<? super T> mapper);
统计
<T> Collector<T, ?, DoubleSummaryStatistics> summarizingDouble(ToDoubleFunction<? super T> mapper);
<T> Collector<T, ?, IntSummaryStatistics> summarizingInt(ToIntFunction<? super T> mapper);
<T> Collector<T, ?, LongSummaryStatistics> summarizingLong(ToLongFunction<? super T> mapper);
连接字符串
Collector<CharSequence, ?, String> joining();
Collector<CharSequence, ?, String> joining(CharSequence delimiter);
Collector<CharSequence, ?, String> joining(CharSequence delimiter,CharSequence prefix,CharSequence suffix);
分组
<T, K> Collector<T, ?, Map<K, List<T>>> groupingBy(Function<? super T, ? extends K> classifier);
<T, K, A, D> Collector<T, ?, Map<K, D>> groupingBy(Function<? super T, ? extends K> classifier,Collector<? super T, A, D> downstream);
<T, K, D, A, M extends Map<K, D>> Collector<T, ?, M> groupingBy(Function<? super T, ? extends K> classifier,Supplier<M> mapFactory,Collector<? super T, A, D> downstream);
<T, K> Collector<T, ?, ConcurrentMap<K, List<T>>> groupingByConcurrent(Function<? super T, ? extends K> classifier);
<T, K, A, D> Collector<T, ?, ConcurrentMap<K, D>> groupingByConcurrent(Function<? super T, ? extends K> classifier,Collector<? super T, A, D> downstream);
<T, K, A, D, M extends ConcurrentMap<K, D>> Collector<T, ?, M> groupingByConcurrent(Function<? super T, ? extends K> classifier, Supplier<M> mapFactory, Collector<? super T, A, D> downstream);
分区
<T> Collector<T, ?, Map<Boolean, List<T>>> partitioningBy(Predicate<? super T> predicate);
<T, D, A> Collector<T, ?, Map<Boolean, D>> partitioningBy(Predicate<? super T> predicate, Collector<? super T, A, D> downstream);
对数据转换
<T, U, A, R> Collector<T, ?, R> mapping(Function<? super T, ? extends U> mapper, Collector<? super U, A, R> downstream)
收集后处理
<T,A,R,RR> Collector<T,A,RR> collectingAndThen(Collector<T,A,R> downstream,Function<R,RR> finisher)
网友评论