1.练习:集合元素处理(传统方式)
现在有两个ArrayList集合存储队伍当中的多个成员姓名,要求使用传统的for循环(或增强for循环)依次进行以下若干操作步骤
- 1.第一个队伍只要名字为3个字的成员姓名;存储到一个新的集合中。
- 2.第一个队伍筛选之后只要前三个人;存储到一个新集合中。
- 3.第二个队伍只要姓张的成员姓名;存储到一个新集合中。
- 4.第二个队伍筛选之后不要前两个人;存储到新集合之中。
- 5.将两个队伍合并为一个队伍;存储到一个新集合之中
- 6.根据姓名创建Person对象;存储到一个新集合中。
- 7.打印整个队伍的Person对象
package com.Stream;
import java.util.ArrayList;
/*
练习:集合元素处理(传统方式)
现在有两个ArrayList集合存储队伍当中的多个成员姓名,要求使用传统的for循环(或增强for循环)依次进行以下若干操作步骤
1.第一个队伍只要名字为3个字的成员姓名;存储到一个新的集合中。
2.第一个队伍筛选之后只要前三个人;存储到一个新集合中。
3.第二个队伍只要姓张的成员姓名;存储到一个新集合中。
4.第二个队伍筛选之后不要前两个人;存储到新集合之中。
5.将两个队伍合并为一个队伍;存储到一个新集合之中
6.根据姓名创建Person对象;存储到一个新集合中。
7.打印整个队伍的Person对象
*/
public class Demo11StreamTest {
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.第一个队伍筛选之后只要前三个人;存储到一个新集合中。
ArrayList<String> one2 = new ArrayList<>();
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("张二狗");
two.add("王维");
//3.第二个队伍只要姓张的成员姓名;存储到一个新集合中。
ArrayList<String> two1 = new ArrayList<>();
for (String name : two) {
if (name.startsWith("张")){
two1.add(name);
}
}
// 4.第二个队伍筛选之后不要前两个人;存储到新集合之中。
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.toString());
}
}
}
2.集合元素处理(使用Stream流的方式)
package com.Stream;
import javax.naming.Name;
import java.util.ArrayList;
import java.util.stream.Stream;
public class Demo12StreamTest {
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.第一个队伍筛选之后只要前三个人;存储到一个新集合中。
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("张二狗");
two.add("王维");
//3.第二个队伍只要姓张的成员姓名;存储到一个新集合中。
//4.第二个队伍筛选之后不要前两个人;存储到新集合之中。
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));
}
}