Stream方法使用-peek和foreach方法讲解

简介: Stream方法使用-peek和foreach方法讲解

Stream方法使用

peek和foreach方法

peek 和 foreach ,都可以用于对元素进行遍历然后逐个的进行处理。

但根据前面的介绍(详细可看Stream初相识篇),peek属于中间方法,而foreach属于终止方法。这也就意味着peek只能作为管道中途的一个处理步骤,而没法直接执行得到结果,其后面必须还要有其它终止操作的时候才会被执行;而foreach作为无返回值的终止方法,则可以直接执行相关操作。

publicvoidtestPeekAndforeach() {
List<String>sentences=Arrays.asList("hello world","Jia Gou Wu Dao");
// 演示点1: 仅peek操作,最终不会执行System.out.println("----before peek----");
sentences.stream().peek(sentence->System.out.println(sentence));
System.out.println("----after peek----");
// 演示点2: 仅foreach操作,最终会执行System.out.println("----before foreach----");
sentences.stream().forEach(sentence->System.out.println(sentence));
System.out.println("----after foreach----");
// 演示点3: peek操作后面增加终止操作,peek会执行System.out.println("----before peek and count----");
sentences.stream().peek(sentence->System.out.println(sentence)).count();
System.out.println("----after peek and count----");
}

输出结果可以看出, peek 独自调用时并没有被执行、但peek后面加上终止操作之后便可以被执行,而foreach 可以直接被执行:

----beforepeek--------afterpeek--------beforeforeach----helloworldJiaGouWuDao----afterforeach--------beforepeekandcount----helloworldJiaGouWuDao----afterpeekandcount----
相关文章
|
2月前
|
索引
ES5常见的数组方法:forEach ,map ,filter ,some ,every ,reduce (除了forEach,其他都有回调,都有return)
ES5常见的数组方法:forEach ,map ,filter ,some ,every ,reduce (除了forEach,其他都有回调,都有return)
|
1月前
for in ,for of和forEach的区别
for in ,for of和forEach的区别
40 5
|
1月前
|
算法
|
2月前
数组方法中的`forEach()`方法和`map()`方法有什么区别?
数组方法中的`forEach()`方法和`map()`方法有什么区别?
|
3月前
|
索引
foreach,for in和for of的区别
foreach,for in和for of的区别
47 1
|
5月前
|
Java
java中Stream流中的forEach、filter、map、count、limit、skip、concat
java中Stream流中的forEach、filter、map、count、limit、skip、concat
179 0
|
6月前
|
JavaScript 前端开发
foreach、for in和for of的区别?
foreach、for in和for of的区别?
49 0
|
6月前
|
前端开发 JavaScript
你不知道的forEach函数
你不知道的forEach函数
|
6月前
|
Python
list()与tolist()区别
python库方法list()与tolist()区别
114 0
|
JavaScript 前端开发 索引
foreach、for in 和for of的区别?
foreach、for in 和for of的区别?