gpt4 book ai didi

java - 使用 Java 8 JDK 将 Iterable 转换为 Stream

转载 作者:bug小助手 更新时间:2023-10-28 10:36:02 29 4
gpt4 key购买 nike

我有一个返回 java.lang.Iterable<T> 的接口(interface).

我想使用 Java 8 Stream API 来处理该结果。

但是 Iterable 不能“流式传输”。

知道如何在不将 Iterable 转换为 List 的情况下将 Iterable 用作 Stream 吗?

最佳答案

有一个比直接使用 spliteratorUnknownSize 更好的答案,这样既简单又得到更好的结果。 Iterable 有一个 spliterator() 方法,所以你应该使用它来获取你的分割器。在最坏的情况下,它是相同的代码(默认实现使用 spliteratorUnknownSize),但在更常见的情况下,你的 Iterable 已经是一个集合,你会得到更好的分离器,因此更好的流性能(甚至可能是良好的并行性)。它的代码也更少:

StreamSupport.stream(iterable.spliterator(), false)
.filter(...)
.moreStreamOps(...);

如您所见,从 Iterable(另见 this question)获取流并不是很痛苦。

关于java - 使用 Java 8 JDK 将 Iterable 转换为 Stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23932061/

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