package com.lovecoding.day24.ex02;


import org.junit.Test;

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

public class Test01 {

    /*
    - 第一个队伍只要名字为小于等于3个字的成员姓名；第一个队伍筛选之后只要前3个人；存储到一个新集合中。
    - 第二个队伍只要姓张的成员姓名；第二个队伍筛选之后去掉前2个人；存储到一个新集合中。
    - 将两个队伍合并为一个队伍；存储到一个新集合中，打印合并队伍后成员姓名。
    - 将两个队伍合并为一个队伍，并根据姓名创建 Person 对象；存储到一个新集合中，打印整个队伍的Person对象信息。
     */
    @Test
    public void test01(){
        //第一支队伍
        ArrayList<String> one = new ArrayList<>();
        one.add("迪丽热巴");
        one.add("宋远桥");
        one.add("苏星河");
        one.add("石破天");
        one.add("石中玉");
        one.add("老子");
        one.add("庄子");
        one.add("洪七公");

        //第一个队伍只要名字为小于等于3个字的成员姓名；第一个队伍筛选之后只要前3个人；存储到一个新集合中。
        List<String> collect1 = one.stream().filter(e -> e.length() == 3).limit(3).collect(Collectors.toList());

        collect1.forEach(System.out::println);

        //第二支队伍
        ArrayList<String> two = new ArrayList<>();
        two.add("古力娜扎");
        two.add("张无忌");
        two.add("赵丽颖");
        two.add("张三丰");
        two.add("尼古拉斯赵四");
        two.add("张天爱");
        two.add("张二狗");

        //第二个队伍只要姓张的成员姓名；第二个队伍筛选之后去掉前2个人；存储到一个新集合中。

        List<String> collect2 = two.stream().filter(e -> e.startsWith("张")).skip(2).collect(Collectors.toList());

        collect2.forEach(System.out::println);

        //将两个队伍合并为一个队伍；存储到一个新集合中，打印合并队伍后成员姓名。

        System.out.println("-----------");
        List<String> collect = Stream.concat(collect1.stream(), collect2.stream()).collect(Collectors.toList());

        collect.stream().forEach(System.out::println);

        //将两个队伍合并为一个队伍，并根据姓名创建 Person 对象；存储到一个新集合中，打印整个队伍的Person对象信息。

        System.out.println("-----------");
        List<Person> collect3 = collect.stream().map(e -> new Person(e)).collect(Collectors.toList());
        List<Person> collect4 = collect.stream().map(Person::new).collect(Collectors.toList());

        collect4.forEach(System.out::println);
    }
}
