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

合并函数参数是否在 toMap 收集器中以确定性顺序提供?

牧熙云
2023-03-14

我有两个列表,我想连接成一个列表,然后使用< code>Collectors.toMap来删除基于特定字段的重复项。同一列表内不能有重复,只能在列表之间。

当谈到解决具有相同键的值的冲突时,我希望对第一个列表中的项目进行优先级排序。

我可以提供<代码>(a,b)-

mergeFunction参数是否保证以与列表相同的顺序传递?

共有1个答案

王凌
2023-03-14

首先,流应该是有序的,但情况并非总是如此。如果您正在创建流,比如说连接从您的列表中产生的两个流(将被排序)< code > stream . concat(list 1 . stream()、list2.stream())那么您的流将被排序。

如果收集器toMap()使用有序流,那么它会尊重这种情况,除非您不通过应用unordered()来放松这种约束。

根据API文件:

订购中

流是否有相遇顺序取决于源和中间操作。…

如果对流进行排序,则大多数操作都会被约束为按元素的遭遇顺序操作。。。

唯一可能不遵循流的遭遇顺序的操作是 forEach()扫视 ()

Collector()不遵守遇到顺序(如果有),除非您通过提供指定特征Collector.Characteristics的Collector来将其与并行流一起使用。UNORDERED(并行运行时可能会提高性能)。toMap()返回的收集器不是无序的

 类似资料:
  • 示例程序: 所以,为了简化这里的问题,没有最终的转换,所以得到的代码非常简单。

  • 问题内容: 示例程序: 因此,为简化起见,没有最终转换,因此生成的代码非常简单。 现在,产生一个顺序流。我只是将结果装箱到s中,然后将其收集到中。很简单 而且,无论我运行此示例程序多少次,都不会成功,这意味着永远不会调用我的虚拟组合器。 我有点期望,但是后来我已经误解了流,以至于我不得不问这个问题… 可以将的组合时,流过被称为 保证 是连续的? 问题答案: 仔细阅读ReduceOps.java中的

  • 我正在尝试使用 json 对象的 s3api cli 为 aws 放置对象标记创建“TagSet”。我已经将 json 解析为哈希,这是我实现最终目标的最大成功。 示例 JSON: 结束目标示例: 到目前为止,我已经将 json 解析为哈希,然后使用以下方法将键和值拆分为 2 个数组: 我想我可以遍历每个数组,然后将它们插入到一个数组中。但是我得到的输出是一个递归列表,其中包含了每个值重复出现的所

  • 我有多个参数要引用,但我不想一个一个地指定它们。

  • 问题内容: C不保证任何评估顺序等等之类的声明可能会执行,,,和以任意顺序(虽然会后,所有的人都被执行) 那Python呢? 我对Python 2.7的实验表明,它似乎是从左到右的评估顺序,但是我想知道是否指定了这种情况。 测试程序: 哪个打印 问题答案: 是的,除作业外,从左到右的评估顺序得到保证。在此处记录(py2,py3): Python从左到右计算表达式。请注意,在评估分配时,右侧的评估先

  • 问题内容: 可以安全地假设函数参数在Python中是从左到右求值的吗? 参考文献指出,这种情况会发生,但是也许有某种方法可以更改此顺序,这可能会破坏我的代码。 我想做的是为函数调用添加时间戳: 我知道我可以按顺序评估参数: 但是它看起来不太优雅,因此如果可以依靠它,我宁愿采用第一种方法。 问题答案: 是的,Python始终从左到右评估函数参数。 据我所知,这适用于任何逗号分隔的列表: