• Java Stream forEach() and forEachOrdered() are terminal operations.Java Stream forEach()和forEachOrdered()是终端操作。
  • The forEach() method is used to perform an action on each elements of the stream.forEach()方法用于对流的每个元素执行操作。
  • If the forEach() method is used with parallel stream, the encounter order is not maintained. The action will be performed on each element, but their order will not be fixed.如果将forEach()方法与并行流一起使用,则不会维护遇到顺序。 该操作将在每个元素上执行,但是它们的顺序不会固定。
  • If you want to perform some action on stream elements in the encounter order, you should use forEachOrdered() method.如果要按遇到顺序对流元素执行某些操作,则应使用forEachOrdered()方法。
  • The underlying collection must have encounter order, otherwise forEachOrdered() will not be able to respect that. So using it with TreeSet or TreeMap is useless.基础集合必须具有遇到顺序,否则forEachOrdered()将无法遵守该顺序。 因此,将它与TreeSet或TreeMap一起使用是没有用的。
  • The forEachOrdered() action is executed on each stream element one by one, so it’s a bit slower than forEach() method.forEachOrdered()操作在每个流元素上一一执行,因此它比forEach()方法要慢一些。
  • Using forEachOrdered() on a parallel stream doesn’t provide benefits of parallel stream, so using it with a parallel stream doesn’t make much sense.在并行流上使用forEachOrdered()不能提供并行流的好处,因此在并行流上使用它没有多大意义。

Java Stream forEach()和forEachOrdered()方法签名 (Java Stream forEach() and forEachOrdered() Methods Signature)

void forEach(Consumer<? super T> action)void forEachOrdered(Consumer&LT;? super T&GT; action);

Consumer is a Functional Interface. It represents an operation that accepts a single input argument and returns no result.

Consumer是一个功能接口 。 它表示一个接受单个输入参数且不返回结果的操作。

流forEach()示例 (Stream forEach() Example)

Let’s look at a simple example to print all the elements of the stream.

让我们看一个简单的示例,以打印流中的所有元素。

jshell> Stream<Integer> streamNumbers = Stream.of(1, 2, 3, 4);
streamNumbers ==> java.util.stream.ReferencePipeline$Head@5a10411jshell> streamNumbers.forEach(System.out::println);
1
2
3
4jshell>

并行流forEach()示例 (Parallel Stream forEach() Example)

Let’s see what happens when we use forEach() with a parallel stream.

让我们看看将forEach()与并行流一起使用会发生什么。

jshell> List<Integer> list = List.of(1, 2, 3, 4, 5, 6, 7);
list ==> [1, 2, 3, 4, 5, 6, 7]jshell> list.parallelStream().forEach(System.out::println);
5
4
1
3
2
7
6jshell>

Stream forEach() Example

流forEach()示例

Notice that the stream elements are getting in random order. The encounter order of the elements is not respected when forEach() is performing an action on stream elements.

请注意,流元素按随机顺序获取。 当forEach()对流元素执行操作时,将不遵守元素的遇到顺序。

并行流forEachOrdered()示例 (Parallel Stream forEachOrdered() Example)

Let’s see what happens when we use forEachOrdered() with a parallel stream of list elements.

让我们看看将forEachOrdered()与列表元素的并行流一起使用会发生什么。

jshell> List<Integer> list = List.of(1, 2, 3, 4, 5, 6, 7);
list ==> [1, 2, 3, 4, 5, 6, 7]jshell> list.parallelStream().forEachOrdered(System.out::println);
1
2
3
4
5
6
7jshell>

It’s clear that the encounter order of the stream is maintained.

很明显,流的遇到顺序得以保持。

参考 (Reference)

  • Stream forEach() API Doc流forEach()API文档

翻译自: https://www.journaldev.com/31841/java-stream-foreach-foreachordered-methods

Java Stream forEach()和forEachOrdered()方法相关推荐

  1. Java LinkedHashMap forEach()方法与示例

    LinkedHashMap类的forEach()方法 (LinkedHashMap Class forEach() method) forEach() method is available in j ...

  2. 浅谈函数式编程与 Java Stream

    CSDN 社区的小伙伴们大家好啊,许久不见- 在这一篇文章中,我将介绍函数式编程的基本概念,如何使用函数式编程的思想编写代码以及 Java Stream 的基本使用方法. 本文不会涉及到任何晦涩难懂的 ...

  3. java foreach order_Java 8流中的forEach vs forEachOrdered

    我知道这些方法的执行顺序不同,但在所有测试中,我都无法实现不同的执行顺序. 例子: System.out.println("forEach Demo"); Stream.of(&q ...

  4. 这个方法可以让你的代码高出一个逼格——掌握 Java Stream 流操作

    概念 Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选.排序.聚合等. Stream` 的操作符大体上分为两种:`中间操作符`和`终止操 ...

  5. java steam 去重_Java中对List去重 Stream去重的解决方法

    问题 当下互联网技术成熟,越来越多的趋向去中心化.分布式.流计算,使得很多以前在数据库侧做的事情放到了Java端.今天有人问道,如果数据库字段没有索引,那么应该如何根据该字段去重?大家都一致认为用Ja ...

  6. Java中 方法引用、Stream流、及方法实例 D190401

    Java中 方法引用.Stream流.及方法实例 D190401 01.第三章:方法引用_什么是方法引用 1).什么是"方法引用":指引用现有的方法代替Lambda表达式--当我们 ...

  7. java stream 遍历map_遍历map的五种方法介绍

    日常开发中Map集合遍历是经常使用的,下面介绍几种遍历方法的差异. (推荐教程:java课程) 1.Iterator+entrySet写法[推荐JDK8以下],Map.Entry是Map接口的内部接口 ...

  8. 【Java 8 新特性】Java Stream 通过skip()方法跳过前N个子元素

    [Java 8 新特性]Java Stream 通过skip方法跳过前N个子元素 1.skip() 示例 2.skip() vs limit() 参考文献 本页将介绍 Stream.skip方法示例. ...

  9. parallel循环java_Java 8 lambda stream forEach parallel 等循环与Java 7 for each 循环耗时测试...

    Java 8 里面的stream 有串行流和并行流之分. 说高级的stream就是那个并行流.下面是那个并行流的简单实现.只要是继承Collection类的都可以这么用. list.stream(). ...

最新文章

  1. C++map容器-大小和互换
  2. 高通的快充协议_高通:后续骁龙旗舰将标配100W快充
  3. 基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现
  4. 第二:Pycharm设置配置(非常详细)
  5. 写给我们奔三的80后们……
  6. SQL Server 2008 R2 企业版/开发版/标准版(中英文下载,带序列号)
  7. mysql存储过程字符串拼接字符串_mysql存储过程求大神(拼接字符串)
  8. 如何阅读PBRT3?
  9. 思科路由器配置命令(详细命令总结归纳)
  10. python股票量化交易入门到实践_Python股票量化交易从入门到实践
  11. 【MDCC专访】郑晔:用JavaScript征服物联网应用开发
  12. python实现触摸精灵功能_触摸精灵实现找图功能
  13. png图片尺寸大小调整
  14. 苹果个人开发者账号申请+获取证书+上架应用商城
  15. 【PyTorch基础教程2】自动求导机制(学不会来打我啊)
  16. 把QQ聊天记录插入数据库中
  17. win下连编socket时[Linker error] undefined reference to XXX
  18. 3、计算圆形面积(蓝桥杯入门题)
  19. Qt Quick实现的涂鸦程序
  20. CY62256 Static RAM 的数据读写操作

热门文章

  1. Clean Code 笔记
  2. 应用IMXMLObject自定义功能性组件
  3. 修改web.conf不重启服务的方法
  4. 懒惰是人类进步的动力,勤奋是实现偷懒的途径
  5. [转载] 树莓派并行控制电机_使用由并行端口控制的软盘驱动步进电机的相机摇摄器
  6. 高通HAL层之Sensor HAL
  7. 如何使用 Opencv 打开摄像头获取图像信息?
  8. linux centos 系统php支持jpeg的安装方法
  9. 重点推荐:HP大中华区总裁孙振耀退休感言
  10. stl之multimap容器