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


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

题目

现在有两个ArrayList集合存储队伍当中的多个成员姓名,要求使用传统的for循环(或增强for循环
依次进行以下若干操作步骤︰

  1.第一个队伍只要名字为3个字的成员姓名﹔存储到一个新集合中。

  2.第一个队伍筛选之后只要前3个人;存储到一个新集合中。

  3.第二个队伍只要姓张的成员姓名;存储到一个新集合中。

  4.第二个队伍筛选之后不要前2个人﹔存储到一个新集合中。

  5.将两个队伍合并为一个队伍;存储到一个新集合中。

  6.根据姓名创建Person对象;存储到一个新集合中。

  7.打印整个队伍的Person对象信息。

两个对象(集合)的代码如下:

 

package A_Lian_two.D05;



import java.util.ArrayList;

public class Demo01StreamTest {
    public static void main(String[] args) {
        //第一支队伍
        ArrayList<String> one = new ArrayList<>();
        one.add("迪丽热巴");
        one.add("asdf");
        one.add("xcvz");
        one.add("wear");
        one.add("qwe");
        one.add("cxv");
        //第一队伍只要名字为3个字的成员姓名,存储到一个新集合中
        ArrayList<String> one1 = new ArrayList<>();
        for (String name : one) {
            if (name.length()==3){
                one1.add(name);
            }
        }
        System.out.println(one1);

        ArrayList<String> one2 = new ArrayList<>();
        //第一队伍筛选之后只要前3个人;存储到一个新集合中
        for (int i = 0; i < 3; i++) {
            one2.add(one.get(i));
        }
        System.out.println(one2);

        //第二支队伍
        ArrayList<String> two = new ArrayList<>();
        two.add("古力娜扎");
        two.add("阿斯蒂芬");
        two.add("adsf");
        two.add("自行车v给");
        two.add("we热情啊");
        two.add("a速度");
        //第二支队伍只要有a的成员
        ArrayList<String> two1 = new ArrayList<>();
        for (String name : two) {
            if (name.startsWith("a")){
                two1.add(name);
            }
        }
//        System.out.println(two1);
        //第二个队伍筛选之后不要前2个人,存储到一个新集合中
        ArrayList<String> two2 = new ArrayList<>();
        for (int i = 2; i < two1.size(); i++) {
            two2.add(two1.get(i));//不包含0 1
        }
        //将两个队伍合并到一个队伍中
        ArrayList<String> all = new ArrayList<>();
        all.addAll(one2);
        all.addAll(two2);

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

        //打印
        for (Person name : list) {
            System.out.println(name);
        }
    }
}

 

练习:集合元素处理(Stream方式)

题目

将上一题当中的传统for循环写法更换为Stream流式处理方式。两个集合的初始内容不变,Person类的定义也不变。

解答

等效的Stream流式处理代码为︰

        //stream方法
        Stream<String> oneStream = one.stream().filter(name -> name.length() == 3).limit(3);
        Stream<String> twostream = two.stream().filter(name -> name.startsWith("a")).skip(2);
        Stream.concat(oneStream,twostream).map(name->new Person(name)).forEach(p-> System.out.println(p));

 

原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/278403.html

(0)
上一篇 2022年8月2日 09:31
下一篇 2022年8月2日 09:41

相关推荐

发表回复

登录后才能评论