• 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. 中国工程院谭建荣:人工智能应用得再好,最核心的算法不行,创新能力就不行丨MEET2021...
  2. C++笔记(2017/2/9)
  3. 一个很好地List实现源码
  4. 【Java正则表达式】正则基本语法、使用方式(分组、替换、分割)、简单爬虫基础
  5. 【数据库】关系数据库理论学习
  6. FreeSql (二十五)延时加载
  7. java多线程爬虫框架crawler4j的使用
  8. 更换分布式文件系统副本组成员的硬件或操作系统——第一步:计划
  9. 【算法】排序_冒泡排序及其优化
  10. 解决pip下载速度太慢
  11. linux 音频处理软件推荐,Linux 上的优秀音频编辑工具推荐
  12. C# DIRECTX INPUT 模拟 (鼠标玩FBA街机)
  13. SSM项目实战:学生学籍管理系统
  14. 超出ipc连接数范围_终端服务器超出了最大允许连接数的解决办法 (全文)
  15. android 邮箱注册功能,手机邮箱怎么注册登录(安卓手机邮箱设置教程)
  16. HDU 5442 后缀自动机(从环字符串选定一个位置 , 时针或顺时针走一遍,希望得到字典序最大)...
  17. CPU 是怎么认识代码的?
  18. MySQL基础之索引
  19. 抖音seo源码,抖音短视频SEO,SEO系统源码搭建
  20. 解决Android 8.1 获取不到wifi名称

热门文章

  1. 甲骨文将关闭Sun开源软件项目托管网站
  2. lightbox的一个ajax效果
  3. mysql 权限管理 记录
  4. 数据结构实验病毒感染检测问题(C++)
  5. python时间模块time
  6. Eclipse------新建文件时没有JSP File解决方法
  7. 第四节:EasyUI的一些操作
  8. Java基础之IO流
  9. 算法学习_简单递归算法
  10. caffe---之eltwise层