1 package day14.lesson2;
2
3 import java.util.ArrayList;
4 import java.util.stream.Stream;
5
6 /*
7 2.5 Stream流案例
8
9 案例需求
10 现在有两个ArrayList集合,分别存储6名男演员名称和6名女演员名称,要求完成如下的操作
11 男演员只要名字为3个字的前三人
12 女演员只要姓林的,并且不要第一个
13 把过滤后的男演员姓名和女演员姓名合并到一起
14 把上一步操作后的元素作为构造方法的参数创建演员对象,遍历数据
15 演员类Actor:有一个成员变量,一个带参构造方法,以及成员变量对应的get/set方法
16 */
17 public class Demo5Stream {
18 public static void main(String[] args) {
19 ArrayList<String> manList = new ArrayList<>();
20 manList.add("周润发");
21 manList.add("成龙");
22 manList.add("刘德华");
23 manList.add("吴京");
24 manList.add("周星驰");
25 manList.add("李连杰");
26
27 ArrayList<String> womanList = new ArrayList<>();
28 womanList.add("林心如");
29 womanList.add("张曼玉");
30 womanList.add("林青霞");
31 womanList.add("柳岩");
32 womanList.add("林志玲");
33 womanList.add("王祖贤");
34
35 /* Stream<String> manStream = manList.stream().filter(s -> s.length() == 3).limit(3);
36 Stream<String> womanStream = womanList.stream().filter(s -> s.startsWith("林")).skip(1);
37
38 // Stream.concat(manStream, womanStream).forEach(System.out::println);
39 // 周润发
40 // 刘德华
41 // 周星驰
42 // 林青霞
43 // 林志玲
44
45 Stream<String> stream = Stream.concat(manStream, womanStream);
46 // stream.map(Actor::new).forEach(System.out::println);
47 // day14.lesson2.Actor@27d6c5e0
48 // day14.lesson2.Actor@4f3f5b24
49 // day14.lesson2.Actor@15aeb7ab
50 // day14.lesson2.Actor@7b23ec81
51 // day14.lesson2.Actor@6acbcfc0
52 stream.map(Actor::new).forEach(p -> System.out.println(p.getName()));
53 // 周润发
54 // 刘德华
55 // 周星驰
56 // 林青霞
57 // 林志玲*/
58
59 Stream.concat(
60 manList.stream().filter(s -> s.length() == 3).limit(3),
61 womanList.stream().filter(s -> s.startsWith("林")).skip(1)
62 ).map(Actor::new).forEach(p -> System.out.println(p.getName()));
63 }
64 }
65
66 class Actor{
67 private String name;
68
69 public Actor(String name) {
70 this.name = name;
71 }
72
73 public void setName(String name) {
74 this.name = name;
75 }
76
77 public String getName() {
78 return name;
79 }
80 }
