有两个Arraylist集合,存储队伍中的多个成员姓名,使用Stream方式,对以下步骤进行操作
1、第一个队伍只要名字为3个字的成员姓名
2、第一个队伍只要筛选之后的前三个人
3、第二个队伍只要姓张的
4、第二个队伍筛选之后不要前两个人
5、将两个队伍合并成一个队伍
6、合并之后的队伍中的所有人的Person(自定义类型)对象,存储到一个ArrayList集合中
队伍1:宫本武藏、宋公明、苏有朋、石头人、时传祥、李耳、庄子、洪七公
队伍2:帕瓦罗蒂、张三疯、赵薇薇、张自忠、孛儿只斤铁木真、张天爱、张翠花
package com.cc.day19;
import java.util.ArrayList;
import java.util.stream.Stream;
/*有两个Arraylist集合,存储队伍中的多个成员姓名,使用Stream方式,对以下步骤进行操作
1、第一个队伍只要名字为3个字的成员姓名
2、第一个队伍只要筛选之后的前三个人
3、第二个队伍只要姓张的
4、第二个队伍筛选之后不要前两个人
5、将两个队伍合并成一个队伍
6、合并之后的队伍中的所有人的Person(自定义类型)对象,存储到一个ArrayList集合中
队伍1:宫本武藏、宋公明、苏有朋、石头人、时传祥、李耳、庄子、洪七公
队伍2:帕瓦罗蒂、张三疯、赵薇薇、张自忠、孛儿只斤铁木真、张天爱、张翠花*/
public class Demo08 {
public static void main(String[] args) {
String str1 = "宫本武藏、宋公明、苏有朋、石头人、时传祥、李耳、庄子、洪七公";
String str2 = "帕瓦罗蒂、张三疯、赵薇薇、张自忠、孛儿只斤铁木真、张天爱、张翠花";
// 将两个队伍的名字分别以顿号分割成字符串数组
String[] s1 = str1.split("、");
String[] s2 = str2.split("、");
// 创建两个list集合存储两个队伍的名字
ArrayList<String> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
// 分别遍历两个字符串数组,将名字加进集合中
for (String s : s1) {
list1.add(s);
}
for (String s : s2) {
list2.add(s);
}
test01(list1);
System.out.println("************************");
test02(list1);
System.out.println("************************");
test03(list2);
System.out.println("************************");
test04(list2);
System.out.println("************************");
test05(list1, list2);
System.out.println("************************");
test06(list1, list2);
}
public static void test01(ArrayList<String> list) {
list.stream().filter(x -> x.length() == 3).forEach(System.out::println);
}
public static void test02(ArrayList<String> list) {
list.stream().filter(x -> x.length() == 3).limit(3).forEach(System.out::println);
}
public static void test03(ArrayList<String> list) {
list.stream().filter(x -> x.startsWith("张")).forEach(System.out::println);
}
public static void test04(ArrayList<String> list) {
list.stream().filter(x -> x.startsWith("张")).skip(2).forEach(System.out::println);
}
public static void test05(ArrayList<String> list1, ArrayList<String> list2) {
/*
* list1.addAll(list2); list1.stream().forEach(System.out::println);
*/
// 流1
Stream<String> stream1 = list1.stream();
// 流2
Stream<String> stream2 = list2.stream();
// 合并两个流
Stream<String> concat = Stream.concat(stream1, stream2);
concat.forEach(System.out::println);
}
public static void test06(ArrayList<String> list1, ArrayList<String> list2) {
ArrayList<Person> result = new ArrayList<>();
// 流1
Stream<String> stream1 = list1.stream();
// 流2
Stream<String> stream2 = list2.stream();
// 合并两个流
Stream<String> concat = Stream.concat(stream1, stream2);
//concat.map(x->new Person(x)).forEach(System.out::println);;
//concat.map(Person::new).forEach(System.out::println);
concat.map(Person::new).forEach(result::add);
result.stream().forEach(System.out::println);
}
}