当前位置: 首页 > 知识库问答 >
问题:

Java流映射和结果容器的收集顺序

章飞虎
2023-03-14
List<MyObject> myList = new ArrayList<>(); 
//populate myList here

List<String> nameList = myList.stream()
        .map(MyObject::getName)
        .collect(Collectors.toList());

共有1个答案

韩智敏
2023-03-14

是的,即使使用并行流,只要您没有将其显式转换为unordered()模式,您也可以预料到这一点。

顺序在顺序模式下从不改变,但在并行模式下可能改变。流将变为无序状态:

  • 如果通过unordered()调用
  • 显式将其转换为无序模式
  • 如果流源报告它是无序的(例如,hashset流是无序的,因为顺序依赖于实现,您不能依赖它)
  • 如果您正在使用无序的终端操作(例如,foreach()操作或收集到无序的收集器,如toset())
 类似资料:
  • 问题内容: 在上面的代码中,我可以期望中的名称顺序始终与中的顺序相同吗? 问题答案: 是的,只要您没有将并行流显式转换为模式,即使您正在使用并行流,也可以期望这样做。 顺序永远不会在顺序模式下更改,但可能会在并行模式下更改。流变得无序: 如果您通过调用将其明确转换为无序模式 如果流源报告它是无序的(例如,流是无序的,因为顺序取决于实现,因此您不能依赖它) 如果您使用的是无序终端操作(例如,进行操作

  • 我有一段代码,看起来像这样。 我读到了两个相互矛盾的(?)关于这一点的“规则”。 那是不应有副作用 那是不应更新可变变量(因此,如果我重构以使用foreach并填充结果列表,则会打破这一点),如中所述http://files.zeroturnaround.com/pdf/zt_java8_streams_cheat_sheet.pdf 我如何解决它,以便使用流并仍然返回一个列表,或者干脆跳过流?

  • 我试图使用JDK 8风格的函数按值对地图进行排序。虽然我得到了排序部分,但我不确定如何在树形图中收集结果。有人能解释一下如何以陈述式的方式完成这项工作吗? 我需要收集另一张

  • 假设你有一张这样的物体地图(尽管想象它更大): rtype=133,有两个! 我想对Streams做的是这样的: 我在理解Collectors&groupBy的工作原理时遇到了一些麻烦,但我想这可能会用于本例。 在Java streams API中进行编码的正确方法是什么? 我很难找到类似的地图例子(人们在他们的例子中更多地使用列表)

  • 我有一个<code>Person<code>对象的集合:。 (实体结构由第三方提供。 现在,我需要一张

  • 我正在浏览Quarkus当前可用的指南 我说的是在不使用现有JPA实体的情况下,将SQL查询结果绑定到自定义pojo的可能性。我找到的所有示例都只从一个表中提取记录,从中提取出相同JPA实体的实例列表。然而,这不太可能是现实世界应用程序的常见用例。大多数情况下,我们必须处理不那么琐碎的查询,这些查询涉及来自不同表的字段的混合、连接或计算字段。 SQL ResultSet映射是一个方便的JPA功能,