package com.shrimpking.t4;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Shrimpking
 * @create 2024/9/12 11:57
 */
public class CollectStream
{
    public static void main(String[] args)
    {
        List<String> list = Arrays.asList("one","two","three");
        Stream<String> stream = list.stream();
        List<String> result1 = stream.collect(
                () -> new ArrayList<>(),
                (al,elt) -> al.add(elt),
                (list1,list2) -> list1.addAll(null)
        );
        System.out.println(result1);

        //并行流
        //以方法引用的形式传参,与上面的lambda表达式等效
        stream = list.parallelStream();
        List<String> result2 = stream.collect(
                ArrayList::new,
                ArrayList::add,
                ArrayList::addAll
        );
        System.out.println(result2);

        stream = list.parallelStream();
        String result3 = stream.collect(
                StringBuilder::new,
                StringBuilder::append,
                StringBuilder::append
        ).toString();

        System.out.println(result3);

    }
}