Java Collectors.groupingBy()---List 是有序的吗?

标签 java java-8 java-stream collectors

对于 Collectors.groupingBy()返回 Map<K,List<T>>是否暗示 List<T>是为了评估流吗?

我没有看到对列表排序的明确描述,而并发版本明确说明没有排序。如果它不是以某种方式订购的,我希望它是一个集合,但我看不出它可能是什么其他订购,除了收到的订单。

我希望它能保证每个列表中的最后一个值是该组收到的最后一个值。

最佳答案

groupingBy() 的文档说:

Implementation Requirements:

This produces a result similar to:

groupingBy(classifier, toList());

toList() 的文档说:

Returns:

a Collector which collects all the input elements into a List, in encounter order

因此,要回答您的问题,只要您的流具有已定义的 encounter order ,您一定会得到有序列表。


编辑:正如@Holger 指出的那样,groupingBy() 还必须遵守遇到顺序以保留toList() 的排序约束。此说明中强烈暗示了它确实存在的事实:

Implementation Note:

...If preservation of the order in which elements are presented to the downstream collector is not required, using groupingByConcurrent(Function, Collector) may offer better parallel performance.

关于Java Collectors.groupingBy()---List 是有序的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39172981/

相关文章:

java - 在 Java 8 中运行 PowerMock 时如何修复VerifyError

java - 如何使用 Java 8 流获取具有映射值的列表的嵌套分组

java - 使用 KSTREAM 或 KSQL 将 JSON 数组转换为 JSON 对象

java - 如何仅使用 GWT 开发模块化企业应用程序

java - 在单个 JTable 单元格中显示来自 ResultSet 的多个值

java - 收集后调用Java 8流中对象的方法

java - Java,嵌套循环,提高性能

Java Webstart 选项

java - 使用流的对象字段列表的总和

java - 如何在嵌入式 Grizzly Jersey 应用程序的主方法中使用 HK2 注入(inject)对象