gpt4 book ai didi

java - 方法返回 Stream 是否安全?

转载 作者:搜寻专家 更新时间:2023-10-30 21:07:33 25 4
gpt4 key购买 nike

我有一种情况,我正在读取数据库并返回 List<String> ,其中根据某些条件选择每个字符串并将其添加到列表中。方法签名是:

public List<String> myMethod(String query, int limit)

第二个参数提供返回列表大小的上限(设置 limit=-1 将移除任何大小限制)。为避免使此方法占用大量内存,我编写了一个返回 Stream<String> 的等效方法。而不是列表。 (注意:我不需要随机访问返回的元素或任何其他特定于列表的功能。)

但是,我对返回 Stream<> 有点怀疑,特别是因为该方法是公开的。公共(public)方法返回 Stream<> 是否安全?在 Java 中?

最佳答案

它不仅安全,而且 recommended由首席 Java 架构师。

特别是如果您的数据是基于 I/O 的,因此在调用 myMethod 时尚未在内存中具体化,则强烈建议返回 Stream 而不是 List。客户端可能只需要消费其中的一部分,或者聚合成一些固定大小的数据。因此,您有机会将 O(n) 的内存需求降低到 O(1)。

请注意,如果并行化对于您的用例也是一个有趣的想法,建议您使用自定义拆分器,其拆分策略适应 I/O 数据源的顺序性质。在这种情况下,我可以推荐 a blog post of mine它呈现了这样一个分离器。

关于java - 方法返回 Stream<T> 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27968173/

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