我是靠谱客的博主 高高鸡翅,最近开发中收集的这篇文章主要介绍collectingAndThen​,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2collectingAndThen

static <T,​A,​R,​RR> Collector<T,​A,​RR> collectingAndThen​(Collector<T,​A,​R> downstream, Function<R,​RR> finisher)

根据函数名称可以简单理解为先collect然后再对其结果进行后续操作。

在上面的averagingInt函数的使用方法示例中由于collect得出的结果为Double类型,因此最后我们还需要进行intValue转换为int类型,如果我们使用collectingAndThen可以把上面的示例改造为:

void test18() {

        List<String> list = List.of("1","2","3","4","100");

        //int avg = list.stream().collect(Collectors.averagingInt(Integer::parseInt)).intValue();

        int avg = list.stream().collect(Collectors.collectingAndThen(Collectors.averagingInt(Integer::parseInt), a -> a.intValue()));

        System.out.println(avg);

    }

从这个示例我们就可以很明了的看到collectingAndThen函数的作用,这个例子看起来比直接用averagingInt函数复杂了些,好像没有什么优势,其实collectingAndThen函数大多是用在对结果集的排序之类的操作上,这样就可以显现collectingAndThen函数的优势。

看下面这个例子:

void test19() {

        List<String> list = List.of("7m","6j","9k","4y","5l","3o","8j");

        ArrayList ts = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(a -> a.charAt(0)))), ArrayList::new));

        System.out.println(ts.toString());

    }

这个例子的作用就是对list中的元素按首字母大小排序,把排序结果以ArrayList类型输出。输出结果如下:

[3o, 4y, 5l, 6j, 7m, 8j, 9k]

 

上面这个例子就能发挥出collectingAndThen的威力。

最后

以上就是高高鸡翅为你收集整理的collectingAndThen​的全部内容,希望文章能够帮你解决collectingAndThen​所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部