[英]Java Stream API - is it possible to create Collector that is collecting result to a new stream?
所以,这个问题是不言自明的:有没有办法创建一个收集器,即收集传递给它的 stream 到一个新的 stream 中?
我知道它可以通过一些技巧来完成,例如:
Collectors.collectingAndThen(Collectors.toList(), List::stream);
但是这段代码分配了冗余的 memory。
解释为什么我首先需要这个:有时我想将一些东西传递给Collectors.groupingBy
然后在下游执行stream操作,而不需要额外的时间。
有没有一种简单的方法(无需编写我自己的 class 实现收集器接口)?
编辑:这个问题已被标记为这个问题的副本,但这不是我要找的。 我不想复制原来的 stream,我想关闭它并生成一个新的 stream,它由相同顺序的相同元素组成,通过 Collector 的方式,而不在两者之间分配 ZCD69B4957F06CD818D7ZBF3D691。
collect 方法将接受一个收集器。
部分采集器如下
Stream.empty()
例如Stream.concat()
BinaryOperator
并且您需要处理第一个元素,因为它将是参考。 例如,对于列表,您得到l1
和l2
并且通常执行l1.addAll(l2)
因此,除了非常复杂之外,memory 分配的开销将比首先收集集合中的所有内容要大。
一切皆有可能,但是,您可能需要编写自己的收集器来满足您的需求。
你甚至可以重写与groupingBy
相同的收集器,但这真的值得吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.