【发布时间】:2021-06-24 22:27:48
【问题描述】:
所以,这个问题不言自明:有没有办法创建一个收集器,即将传递给它的流收集到一个新流中?
我知道这可以通过一些技巧来完成,例如:
Collectors.collectingAndThen(Collectors.toList(), List::stream);
但是这段代码分配了冗余内存。
解释为什么我首先需要这个:有时我想将一些东西传递给Collectors.groupingBy,然后在下游执行 stream 操作,而不需要额外的时间。 p>
有没有一种简单的方法来做到这一点(无需编写我自己的实现收集器接口的类)?
编辑:这个问题已被标记为与this 问题的重复,但这不是我想要的。我不想复制原始流,我想关闭它并通过收集器以相同的顺序生成一个由相同元素组成的新流,而不需要在两者之间分配内存。
【问题讨论】:
-
收集器,将流收集到一个集合中。在集合之前,它始终是一个流。如果您仍然想使用流,为什么要收集它?也许我还没有理解你的意思更深层次的东西,但在我看来,你想收集你的流,然后再流它。
-
我在问题中描述的构造在我将收集器传递给另一个收集器时很有用,例如
Collectors.groupingBy,因此它将在另一个流上运行。
标签: java functional-programming java-stream