Stream流案例

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

1. 第一个队伍只要名字为3个字的成员姓名;存储到一个新集合中。
2. 第一个队伍筛选之后只要前3个人;存储到一个新集合中。
3. 第二个队伍只要姓张的成员姓名;存储到一个新集合中。
4. 第二个队伍筛选之后不要前2个人;存储到一个新集合中。
5. 将两个队伍合并为一个队伍;存储到一个新集合中。
6. 根据姓名创建 Person 对象;存储到一个新集合中。
7. 打印整个队伍的Person对象信息。

 

import java.util.*;
import java.util.stream.Stream;
public class SocketLearning  {

    public static void main(String[] args)    {
        
//        method();  // 非stream 流处理方式
        stream();
        
    }
    public static void stream()      // stream流处理方式
    {
        
        //第一支队伍
         ArrayList<String> one = new ArrayList<>();
         one.add("迪丽热巴");
         one.add("宋远桥");
         one.add("苏星河");
         one.add("石破天");
         one.add("石中玉");
         one.add("老子");
         one.add("庄子");
         one.add("洪七公");
         
         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("张二狗");
         Stream<String> twoStream = two.stream().filter(name-> name.startsWith("张")).skip(2);
         
         Stream.concat(oneStream, twoStream).map(name->new Person(name)).forEach(p-> System.out.println(p));
         
         
    }

    public static void method()   // 非stream流处理方式、特别繁琐
    {
         //第一支队伍
         ArrayList<String> one = new ArrayList<>();
         one.add("迪丽热巴");
         one.add("宋远桥");
         one.add("苏星河");
         one.add("石破天");
         one.add("石中玉");
         one.add("老子");
         one.add("庄子");
         one.add("洪七公");
         ArrayList<String> one1 = new ArrayList<String>();
         for(String name : one)
         {
             if(name.length()==3)
             {
                 one1.add(name);
             }
         }
         ArrayList<String> one2 = new ArrayList<String>();
         for(int i = 0; i < 3 ; i++)
         {
             one2.add(one1.get(i)); // i = 0,1,2;
         }
         
         //第二支队伍
         ArrayList<String> two = new ArrayList<>();  
         two.add("古力娜扎");
         two.add("张无忌"); 
         two.add("赵丽颖"); 
         two.add("张三丰"); 
         two.add("尼古拉斯赵四"); 
         two.add("张天爱"); 
         two.add("张二狗");
         
         ArrayList<String> two1 = new ArrayList<String>();
         for(String name : two)
         {
             if(name.startsWith("张"))
             {
                 two1.add(name);
             }
         }
         ArrayList<String> two2 = new ArrayList<String>();
         for(int i = 2; i < two1.size(); i++)
         {
              two2.add(two1.get(i)); //i 不包含 0,1
         }
         
         ArrayList<String> all = new ArrayList<String>();
         all.addAll(one2);
         all.addAll(two2);
         
         ArrayList<Person> list = new ArrayList<Person>();
         for(String name : all)
         {
             list.add(new Person(name));
         }
         
         for(Person person : list)
         {
             System.out.println(person);
         }
         
    }
}

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

 

posted @ 2019-12-06 15:49  蚂蚁雅黑1010  阅读(360)  评论(0编辑  收藏  举报