流操作应用于列表元素的顺序是什么? [复制]

2023-11-21

假设我们有一个标准的流操作方法链:

Arrays.asList("a", "bc", "def").stream()
  .filter(e -> e.length() != 2)
  .map(e -> e.length())
  .forEach(e -> System.out.println(e));

JLS 中是否对流操作应用于列表元素的顺序有任何保证?

例如,是否保证:

  1. 将过滤谓词应用于"bc"在应用过滤谓词之前不会发生"a"?
  2. 将映射函数应用到"def"在应用映射函数之前不会发生"a"?
  3. 1将在之前打印3?

Note: 我这里专门讲一下stream(), not parallelStream()预计映射和过滤等操作是并行完成的。


你想知道的一切都可以在java.util.stream JavaDoc.

Ordering

流可能有也可能没有定义的遭遇顺序。无论是否 流的遇到顺序取决于源和 中间操作。某些流源(例如 List 或 数组)本质上是有序的,而其他(例如 HashSet) 不是。一些中间操作,例如sorted(),可能会强加一个 在原本无序的流上遇到顺序,其他人可能会 将有序流渲染为无序,例如 BaseStream.unordered()。 此外,一些终端操作可能会忽略遇到的顺序,例如 forEach()。

如果流是有序的,则大多数操作都被限制为在 元素的遭遇顺序;如果流的源是 包含[1,2,3]的列表,则执行map(x -> x*2)的结果 必须是 [2, 4, 6]。但是,如果源没有定义遭遇 顺序,那么值 [2, 4, 6] 的任何排列都是有效的 结果。

对于顺序流,存在或不存在遭遇顺序 不影响性能,只影响确定性。如果一个流是有序的, 在相同的流管道上重复执行相同的流管道 源将产生相同的结果;如果没有订购, 重复执行可能会产生不同的结果。

对于并行流,放宽排序约束有时可以 实现更高效的执行。某些聚合操作,例如 过滤重复项(distinct())或分组缩减 (Collectors.groupingBy()) 可以更有效地实现,如果 元素的顺序不相关。类似地,操作是 本质上与遇到顺序相关,例如 limit(),可能需要 缓冲以确保正确排序,破坏了好处 并行性。如果流有遇到顺序,但 用户并不特别关心遇到的顺序,明确地 使用 unordered() 对流进行解序可以提高并行性 某些有状态或终端操作的性能。然而,大多数 流管道,例如上面的“块的权重总和”示例, 即使在排序限制下仍然可以有效地并行化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

流操作应用于列表元素的顺序是什么? [复制] 的相关文章

  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • 序列的排列?

    我有具体数量的数字 现在我想以某种方式显示这个序列的所有可能的排列 例如 如果数字数量为3 我想显示 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 1 0 1 1 0
  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp

随机推荐

  • PhpMyAdmin 无法在本地主机上运行

    Xampp版本 1 7 7 安装在外部硬盘上 操作系统 Windows 8 安装了 4 1 7 版本的 phpMyAdmin 并将 config inc php 从我的旧版本 phpmyadmin 复制到新版本 phpmyadmin 4 1
  • NVD3.js multiChart x 轴标签与多条线对齐,但不是与多个条形对齐

    这个问题涉及到NVD3 js multiChart x 轴标签与线对齐 但不与条形对齐 我正在使用 NVD3 jsmultiChart以显示多行 and 多个酒吧在图表中 一切工作正常 但 x 轴标签仅与线点对齐 而不与条形对齐 我想正确对
  • Spring 测试与安全:如何模拟身份验证?

    我试图弄清楚如何对我的控制器的 URL 是否得到正确保护进行单元测试 以防万一有人更改内容并意外删除安全设置 我的控制器方法如下所示 RequestMapping api v1 resource test Secured ROLE USER
  • SwiftUI 中 Stepper 的奇怪行为

    我想使用 onIncrement 和 onDecrement 在手动 非绑定 模式下使用步进视图 当我尝试实现下限和上限时 会出现奇怪的行为 例如 年龄值不低于 1 或高于 10 如果您尝试以下代码 则可以在其值已为 1 后按两次 它并没有
  • AWS ECS 私有和公共服务

    我有一个场景 我必须在AWS ECS上部署多个微服务 我想让服务能够通过每个微服务中开发的 API 相互通信 我想在 AWS ECS 上部署前端 该前端可以公开访问 并且还可以与部署在 AWS ECS 上的其他微服务进行通信 我怎样才能实现
  • Eclipse+FindBugs - 排除过滤器文件不起作用

    我使用 Windows 和 Eclipse 3 7 Classic 以及 ADT 插件进行 Android 开发 我刚刚安装了 FindBugs 它在自动生成的 R java 类中发现了一个错误 我想从 FindBugs 检查中排除此类 我
  • 预加载器不会忽略 websocket -pace js

    我在我的网站上添加了预加载器 该网站在 Rails 上使用 ruby 运行 看起来它工作得很好 但是由于 Pusher Websockets 预加载器不会结束 它一直在等待 我在页脚尝试了这个 但它不起作用 我怎么解决这个问题 我尝试了这个
  • 未解决的参考:库 - buildSrc

    我正在尝试切换到使用 Kotlin DSL 从对象 Kotlin 文件而不是 gradle 文件获取依赖项版本 当我进行 gradle 同步时 它无法解析引用 但我可以从 build gradle kts 单击文件 库 我没有对 build
  • Pandas 时间序列重采样和插值一起

    我有带时间戳的传感器数据 由于技术细节的原因 我从传感器获取数据大约间隔一分钟 数据可能如下所示 tstamp val 0 2016 09 01 00 00 00 57 1 2016 09 01 00 01 00 57 2 2016 09
  • 跨域 iframe 调整大小?

    我正在寻找一个好的跨域 iframe 调整大小脚本 可以根据其内容调整其高度 我也可以访问 iframe 源的 html css 那里有吗 如果您的用户使用现代浏览器 您可以使用以下命令轻松解决此问题HTML5 中的 postMessage
  • 构建 Visual Studio 项目时构建 Sandcastle 文档

    我正在使用 Sandcastle 帮助文件生成器将我的 C XML DOC 文件输出为网站格式 如何从命令行完成相同的操作 以便在构建实际项目时将其添加为 Visual Studio 中的构建事件 最终目标是在构建 Visual Studi
  • php 文件自动重命名为 php.suspected

    自过去 4 天以来 我们的生产服务器 AWS EC2 实例 上遇到了奇怪的问题 该问题仅针对一个站点 即 SugarCRM 问题是 home site folder public html include MassUpdate php文件自
  • 不可见组件仍然占用 JPanel 空间

    我在 JPanel 中设置了一系列位于 GridLayout 中的组件 我需要暂时隐藏组件 但是setVisible false 并没有切断它 因为组件所在的位置仍然有一个空白 有没有一种快速且简单的方法可以做到这一点 或者我是否必须继续保
  • Spring Security 的最大并发用户数

    我在我的项目中使用 Spring Security 3 0 并且限制用户最多拥有一个会话 配置如下
  • 如何像 Java 包一样组织 Angular 应用程序文件夹?

    如何像 Java 包一样组织 Angular 2 应用程序文件夹结构 考虑以下项目布局 app model component service 我想进口foo service ts from service to bar component
  • 未捕获的引用错误:导出未定义且需要

    我正在使用 angularjs 和 typescript 创建一些应用程序 我遇到了无法解决的错误 这是我的 ts 代码 export var NgApp new application Startup
  • 如何在 R 中处理二进制字符串?

    R 无法处理字符中的空字符串 0 有谁知道如何处理这个问题 更具体地说 我想使用 ODBC 或 JDBC 连接在数据库中存储复杂的 R 对象 由于复杂的 R 对象不容易映射到数据帧 因此我需要不同的可能性来存储此类对象 一个对象可以是例如
  • 安装react-native-firebase/app后,在react-native ios中构建将失败

    安装后react native firebase email protected with react native 0 68 1 using use frameworks 并删除flipper在项目的podfile中 但是当我运行时npx
  • 远程通知 iOS 8

    如何在 iOS 8 中获取用于远程通知的设备令牌 我用的方法didRegisterForRemoteNotificationsWithDeviceToken in AppDelegate在 iOS 阅读 UIApplication h 中的
  • 流操作应用于列表元素的顺序是什么? [复制]

    这个问题在这里已经有答案了 假设我们有一个标准的流操作方法链 Arrays asList a bc def stream filter e gt e length 2 map e gt e length forEach e gt Syste