美文网首页技术栈
2019-04-29——Java8 Collectors

2019-04-29——Java8 Collectors

作者: 烟雨乱平生 | 来源:发表于2019-04-29 15:45 被阅读0次

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)

相关文章

网友评论

    本文标题:2019-04-29——Java8 Collectors

    本文链接:https://www.haomeiwen.com/subject/ilbynqtx.html