gpt4 book ai didi

java - 懒惰地创建流

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:53:20 26 4
gpt4 key购买 nike

如何延迟创建流?在基于集合的代码迁移过程中,我多次遇到这种模式:

Collection collection = veryExpensiveCollectionCreation();
return Stream.concat(firstStream, collection.stream());

正如我们所知,生成的连接流通常是延迟处理的。因此,如果流处理在连接流的第一部分停止,则根本不需要昂贵的收集。

因此出于性能原因,我想推迟整个集合的创建,直到串联流实际尝试迭代串联的第二部分的元素。

伪代码看起来像

return Stream.concat(firstStream, new LazyStreamProvider() {
Stream<Something> createStream() {
return veryExpensiveCollectionCreation().stream();
}
);

编辑:我知道最好将集合创建重构为流,以使所有 API 流都知道。但是,在这种情况下,这是另一个具有不可修改 API 的组件的一部分。

最佳答案

也许不是最好的解决方案,但你可以在 flatMap 方法中构建你的集合,这样它就会被延迟构建:

return Stream.concat(
firstStream,
Stream.of(Boolean.TRUE).flatMap(ignoredBoolean -> veryExpensiveCollectionCreation().stream())
);

关于java - 懒惰地创建流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46567582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com