题目
现在有两个 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+"}"; } }