【发布时间】:2016-12-25 02:28:57
【问题描述】:
Java 8 中是否有任何方法可以将 java.util.stream.Stream 中的元素分组而不收集它们?我希望结果再次成为Stream。因为我必须处理大量数据甚至无限流,所以我无法先收集数据并再次流式传输结果。
所有需要分组的元素在第一个流中都是连续的。因此,我喜欢保持流评估惰性。
【问题讨论】:
-
如果您的数据已经“预先分组”(通过连续),为什么还需要分组形式?提供一些上下文可能有助于为这个问题提供更好的答案
-
你的意思是使用
Collectors中的groupBy而不收集? -
听起来像是队列的工作,而不是流。消耗队列中的连续元素,直到检测到下一个组的开始,将该组添加到包含该组的下一个队列。
-
我必须从一个流开始,因为我以这种方式获取数据(大多数时候,但并不总是在数据库中进行 JOIN 之后,但并不总是超出 jOOQ grin)和与消费者对象的合同也是一个流。我必须对数据进行分组以重新创建由连接表表示的两个实体的 1:n 关系。因此,我试图实现的是根据关系 1 侧的相同对象对数据库记录进行分组。在进一步的步骤中,我会将分组记录映射到此对象以及关系 n 侧的对象列表。
标签: java java-8 grouping java-stream