10
如何才能流畅地创建流?在基于收集代码迁移我遇到了这种模式多次:懒洋洋地创建流
Collection collection = veryExpensiveCollectionCreation();
return Stream.concat(firstStream, collection.stream());
产生的级联流一般懒洋洋地处理,因为我们知道。因此,如果流处理在串联流的第一部分中停止,则根本不需要昂贵的集合。
所以出于性能方面的原因,我想推迟创建整个集合,直到连接流实际尝试迭代连接的第二部分的元素。
伪代码看起来像
return Stream.concat(firstStream, new LazyStreamProvider() {
Stream<Something> createStream() {
return veryExpensiveCollectionCreation().stream();
}
);
编辑:我知道重构的收集创作到流将是最好的,让所有的API的流察觉。但是,在这种情况下,这是另一个具有不可修改API的组件的一部分。
可以修改veryExpensiveCollectionCreation(的'体)'或者只是超负荷它返回一个'Stream'? – Mena
可以修改'veryExpensiveCollectionCreation()'来返回一个惰性流而不是严格的集合吗? – puhlen