集合元素处理(传统方式和Stream方式)

集合元素处理(传统方式)

 

/*
    现在有两个ArrayList集合存储队伍当中的多个成员姓名,要求使用传统的for循环(或增强for循环)一次进行以下操作
    1.第一个队伍只要名字为3个字的成员姓名,存储到一个新集合中
    2.第一个队伍筛选之后只要前3个人,存储到一个新集合中
    3.第二个队伍只要姓张的成员姓名,存储到一个新集合汇总新集合中
    4.第二个队伍筛选之后不要前2个人,储存到一个
    5.将两个队伍合并为一个队伍,存储到一个新集合中
    6.根据姓名创建Person对象,存储到一个新集合中
    7.打印整个队伍为的Person对象信息
 */
public static void main(String[] args) {
    //第一只队伍
    ArrayList<String> one = new ArrayList<>();
    one.add("迪丽热巴");
    one.add("宋远桥");
    one.add("苏星河");
    one.add("石破天");
    one.add("石傲玉");
    one.add("庄子");
    //1.第一个队伍只要名字为3个字的成员姓名,存储到一个新集合中
    ArrayList<String> one1 = new ArrayList<>();
    for (String s : one) {
        if (s.length()==3){
            one1.add(s);
        }
    }
    //2.第一个队伍筛选之后只要前3个人,存储到一个新集合中
    ArrayList<String> one2 = new ArrayList<>();
    for(int i= 0;i<3;i++){
        one2.add(one1.get(i));
    }




    //第二只队伍
    ArrayList<String> two = new ArrayList<>();
    two.add("张无忌");
    two.add("哎嘿嘿");
    two.add("狂铁");
    two.add("钟馗");
    two.add("宫本");

    // 3.第二个队伍只要姓张的成员姓名,存储到一个新集合汇总
    ArrayList<String> two1 = new ArrayList<>();
    for (String s : two) {
        if (s.startsWith("")){
            two1.add(s);
        }
    }
    // 4.第二个队伍筛选之后不要前2个人,储存到一个
    ArrayList<String> two2 = new ArrayList<>();
    for(int i= 2;i<two1.size();i++){
        two2.add(two1.get(i));
    }
    //5.将两个队伍合并为一个队伍,存储到一个新集合中
    ArrayList<String> all = new ArrayList<>();
    all.addAll(two2);
    all.addAll(one2);

    // 6.根据姓名创建Person对象,存储到一个新集合中
    ArrayList<Person> list = new ArrayList<>();
    for(String name : all){
        list.add(new Person(name));
    }

    // 7.打印整个队伍为的Person对象信息
    for (Person person : list) {
        System.out.println(person);
    }

}

//运行结果

Person{name='宋远桥'}
Person{name='苏星河'}
Person{name='石破天'}

 

 

 

 

 

集合元素处理(Stream方式)

public static void main(String[] args) {
        //第一只队伍
        ArrayList<String> one = new ArrayList<>();
        one.add("迪丽热巴");
        one.add("宋远桥");
        one.add("苏星河");
        one.add("石破天");
        one.add("石傲玉");
        one.add("庄子");

        //1.第一个队伍只要名字为3个字的成员姓名,存储到一个新集合中
        //2.第一个队伍筛选之后只要前3个人,存储到一个新集合中
        Stream<String> oneSteam = one.stream().filter(name -> name.length() == 3).limit(3);


        ArrayList<String> two = new ArrayList<>();
        two.add("张无忌");
        two.add("哎嘿嘿");
        two.add("狂铁");
        two.add("钟馗");
        two.add("宫本");

        //3.第二个队伍只要姓张的成员姓名,存储到一个新集合汇总新集合中
        //4.第二个队伍筛选之后不要前2个人,储存到一个
        Stream<String> twoStream = two.stream().filter(name -> name.startsWith("")).skip(2);

        // 5.将两个队伍合并为一个队伍,存储到一个新集合中
        //6.根据姓名创建Person对象,存储到一个新集合中
        //7.打印整个队伍为的Person对象信息
        Stream.concat(oneSteam,twoStream).map(name->new Person(name)).forEach(p-> System.out.println(p));

    }

//运行结果

Person{name='宋远桥'}
Person{name='苏星河'}
Person{name='石破天'}

 

 

posted @ 2022-09-22 09:32  漁夫  阅读(37)  评论(0)    收藏  举报