我对这种情况感到困惑:
Producer
,它会从一个下划线迭代器中产生一定数量的项目,可能还有很多。Producer
返回流会很好,编写将Iterator
转换为Stream
的代码会更容易(使用Spliterators
和StreamSupport.stream()
),然后应用Stream.map()
并返回最后一个流。Stream.count()
来强迫它。问题是:
next()/hasNext()
实现Iterator
非常麻烦,主要是因为它会强制您创建一个新类(即使它可以是匿名的)并保留指针并进行检查。对于集合视图也是如此,返回创建的集合而不是下划线迭代器上的动态视图是不可能的(输入数据集可能非常大)。我到目前为止唯一的选择是Java implementation of yield()
。我也不希望在Producer中使用流(即forEach()
),因为其他一些调用者可能希望它执行一些实际的操作。