什么是Stream?
Stream是元素的集合,这点让Stream看起来用些类似Iterator;可以支持顺序和并行的对原Stream进行汇聚的操作;
我们可以把Stream当成一个高级版本的Iterator。原始版本的Iterator,用户只能一个一个的遍历元素并对其执行某些操作;高级版本的Stream,用户只要给出需要对其包含的元素执行什么操作,比如“过滤掉长度大于10的字符串”、“获取每个字符串的首字母” 等,具体这些操作如何应用到每个元素上,就给Stream就好了!
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Locale; import java.util.stream.Collectors; import java.util.stream.Stream; public class StreamDemo { public static void main(String[] args) { streamDemo1(); } /** * Stream 接口:不是存储数据结构,数据源可以是一个集合,为了函数式编程而被创造, * 懒惰式执行,只有真正用到的时候才会使用,数据只能被消费一次,所以特别注意:Stream 流的注意事项:Stream不调用终止方法,中间的操作不会执行。 * * 两种类型的操方法: * 1.中间操作(生成一个Stream) * 2.结束操作(执行计算操作) * * */ public static void streamDemo1(){ /** * 获取Stream --- collection(集合)中自带stream()方法返回一个stream对象 */ // List<String> list = new ArrayList<>(); // Stream<String> stream1 = list.stream(); Stream<String> stream = Stream.of("good","good" ,"study","day","day","up"); //两个集合转换为一个流 Stream<List<Integer>> listStream = Stream.of(Arrays.asList(1, 2, 3), Arrays.asList(4, 5)); /** * 遍历 */ //foreach方法--结束操作,因为什么也不返回,输出完就无法操作了 // stream.forEach((str)->System.out.println(str)); // stream.forEach(System.out::println); /** * 过滤 */ //filter --中间操作,因为返回的还是stream,可以进行进一步的操作,所以可以链式操作 //Stream<T> filter(Predicate<? super T> predicate); 断言式接口 // stream.filter((s)->s.length()>3).forEach(System.out::println); /** * 去重 */ //distinct // stream.distinct().forEach(s-> System.out.println(s)); /** * 映射(执行操作后再映射) */ //map // stream.map(s->s.toUpperCase(Locale.ROOT)).forEach(System.out::println); /** * 平摊 --- 比如一个流中含有两个集合,一个集合有三个元素,另一个集合有两个元素,通过映射就能平摊为装有一个含5个元素集合的流 */ //flatMap // listStream.flatMap(list->list.stream()).forEach(s-> System.out.println(s)); /** * 合并流 --- 合并多个元素并产生单个值。 */ //reduce -- 求最大值,最小值,所有数相加...,此处为字符串连接,中间用空格连接 // String s1 = stream.reduce((s, s2) -> s + " " + s2).get(); // System.out.println(s1); /** * 收集 --- 当我们对 Stream 流中的数据操作完成之后,如果需要将流的结果进行保存,方便我们接下来对结果的继续操作 */ //collect --- 配合 Collectors工具类 转化为集合、数组... List<String> collect = stream.collect(Collectors.toList()); collect.forEach(System.out::println); /** * 更多方法看API文档 */ } }
最后
以上就是幽默月饼最近收集整理的关于铂西学习日记---高级Iterator-Stream接口的全部内容,更多相关铂西学习日记---高级Iterator-Stream接口内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复