首页 > 其他分享 >练习:集合元素处理(传统方式)和元素处理的(Stream流的方式)

练习:集合元素处理(传统方式)和元素处理的(Stream流的方式)

时间:2022-09-26 15:37:48浏览次数:56  
标签:name Stream 处理 ArrayList 元素 two Person add 集合

public class Person {
    private String name;
 
    public Person() {
    }
 
    public Person(String name) {
        this.name = name;
    }
 
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                '}';
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}

传统方式:

/**
 *  练习:集合元素处理(传统方式)
 *         现在有两个ArrayList集合存储队伍当中的多个成员姓名,要求使用传统的for循环(或增强for循环)依次进行以下若干操作步骤:
 *         1. 第一个队伍只要名字为3个字的成员姓名;存储到一个新集合中
 *         2. 第一个队伍筛选之后只要前3个人;存储到一个新集合中
 *         3. 第二个队伍只要姓张的成员姓名;存储到一个新集合中
 *         4. 第二个队伍筛选之后不要前2个人;存储到一个新集合中
 *         5. 将两个队伍合并为一个队伍;存储到一个新集合中
 *         6. 根据姓名创建Person对象;存储到一个新集合中
 *         7. 打印整个队伍的Person对象信息
 */
public class Demo01StreamTest {
    public static void main(String[] args) {
        //第一支队伍
        ArrayList<String> one = new ArrayList<>();
        one.add("迪丽热巴");
        one.add("宋远桥");
        one.add("苏星河");
        one.add("石破天");
        one.add("石中玉");
        one.add("老子");
        one.add("庄子");
        one.add("孔子");
        //1.第一个队伍只要名字为3个字的成员姓名;存储到一个新集合中
        ArrayList<String> one1 = new ArrayList<>();
        for (String name:one) {
            if (name.length()==3){
                one1.add(name);
            }
        }
        //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("尼古拉斯赵四");
        two.add("张天爱");
        two.add("张二狗");
        //3.第二个队伍只要姓张的成员姓名;存储到一个新集合中
        ArrayList<String> two1 = new ArrayList<>();
        for (String name:two) {
            if (name.startsWith("张")){
                two1.add(name);
            }
        }
        //4.第二个队伍筛选之后不要前2个人;存储到一个新集合中
        ArrayList<String> two2 = new ArrayList<>();
        for (int i = 2; i <two1.size() ; i++) {
            two2.add(two1.get(i));//i 不包含0 1
        }
        //5.将两个队伍合并为一个队伍;存储到一个新集合中
        ArrayList<String> all = new ArrayList<>();
        all.addAll(one2);
        all.addAll(two2);
        //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);
        }
    }
}

Stream流的方式:

/*
    练习:集合元素处理(Stream方式)
    将上一题当中的传统for循环写法更换为Stream流式处理方式。
    两个集合的初始内容不变,Person类的定义也不变。
 */
public class Demo02StreamTest {
    public static void main(String[] args) {
        //第一支队伍
        ArrayList<String> one = new ArrayList<>();
        one.add("迪丽热巴");
        one.add("宋远桥");
        one.add("苏星河");
        one.add("石破天");
        one.add("石中玉");
        one.add("老子");
        one.add("庄子");
        one.add("洪七公");
        //1. 第一个队伍只要名字为3个字的成员姓名;存储到一个新集合中。
        //2. 第一个队伍筛选之后只要前3个人;存储到一个新集合中。
        Stream<String> oneStream = one.stream().filter(name -> name.length() == 3).limit(3);
 
        //第二支队伍
        ArrayList<String> two = new ArrayList<>();
        two.add("古力娜扎");
        two.add("张无忌");
        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(oneStream,twoStream).map(name->new Person(name)).forEach(p-> System.out.println(p));
    }
}

 

标签:name,Stream,处理,ArrayList,元素,two,Person,add,集合
From: https://www.cnblogs.com/xuche/p/16731076.html

相关文章