我是靠谱客的博主 文静白昼,最近开发中收集的这篇文章主要介绍java stream中的collect方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

该方法需要3个参数

    <R> R collect(Supplier<R> supplier,
                  BiConsumer<R, ? super T> accumulator,
                  BiConsumer<R, R> combiner);

第一个 supplier 用来包装返回结果的容器
也就是你需要什么返回值 这里创建一个什么对象
第二个 accumulator 用来处理每一个元素,
这个如果是单纯的stream是有顺序的,如果是并行流则是没有顺序的.
第三个combiner 如果不是使用并行流 则可以直接传null 因为不会进行操作

可以看下面代码 并行流虽然也是多线程但是用collect最终得出结果还是有顺序的

        int[] resultText = "123456789".chars().map(i -> Integer.parseInt(String.valueOf((char) i))).toArray();
//        StringBuilder result = Arrays.stream(resultText).collect(StringBuilder::new, StringBuilder::append, StringBuilder::append);
        StringBuilder result = Arrays.stream(resultText).parallel().collect(StringBuilder::new, (sb, s) -> {
            System.out.println(Thread.currentThread().getName()+"---" + sb.toString());
            System.out.println(Thread.currentThread().getName()+"***" + s);
            sb.append(s);
        }, (sb, s) -> {
            System.out.println(Thread.currentThread().getName()+"&&&" + sb.toString());
            System.out.println(Thread.currentThread().getName()+"###" + s);
            sb.append(s);
        });
        System.out.println(result);

输出结果

main---
main***6
ForkJoinPool.commonPool-worker-9---
ForkJoinPool.commonPool-worker-9***5
ForkJoinPool.commonPool-worker-9&&&5
ForkJoinPool.commonPool-worker-9###6
ForkJoinPool.commonPool-worker-3---
ForkJoinPool.commonPool-worker-3***7
ForkJoinPool.commonPool-worker-7---
ForkJoinPool.commonPool-worker-7***8
ForkJoinPool.commonPool-worker-5---
ForkJoinPool.commonPool-worker-5***3
ForkJoinPool.commonPool-worker-5---
ForkJoinPool.commonPool-worker-5***4
ForkJoinPool.commonPool-worker-5&&&3
ForkJoinPool.commonPool-worker-5###4
ForkJoinPool.commonPool-worker-5---
ForkJoinPool.commonPool-worker-5***1
ForkJoinPool.commonPool-worker-5---
ForkJoinPool.commonPool-worker-5***9
ForkJoinPool.commonPool-worker-5&&&8
ForkJoinPool.commonPool-worker-5###9
ForkJoinPool.commonPool-worker-5&&&7
ForkJoinPool.commonPool-worker-5###89
ForkJoinPool.commonPool-worker-5&&&56
ForkJoinPool.commonPool-worker-5###789
ForkJoinPool.commonPool-worker-3---
ForkJoinPool.commonPool-worker-3***2
ForkJoinPool.commonPool-worker-3&&&1
ForkJoinPool.commonPool-worker-3###2
ForkJoinPool.commonPool-worker-3&&&12
ForkJoinPool.commonPool-worker-3###34
ForkJoinPool.commonPool-worker-3&&&1234
ForkJoinPool.commonPool-worker-3###56789
123456789

最后

以上就是文静白昼为你收集整理的java stream中的collect方法的全部内容,希望文章能够帮你解决java stream中的collect方法所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部