使用Java 8 JDK将迭代转换为流
2022-08-31 04:24:22
我有一个返回.java.lang.Iterable<T>
我想使用Java 8 Stream API来操作这个结果。
但是,Iterable不能“流式传输”。
任何想法如何使用可迭代作为流而不将其转换为列表?
我有一个返回.java.lang.Iterable<T>
我想使用Java 8 Stream API来操作这个结果。
但是,Iterable不能“流式传输”。
任何想法如何使用可迭代作为流而不将其转换为列表?
有一个比直接使用更好的答案,这既容易又能得到更好的结果。 有一个方法,所以你应该用它来获取你的分离器。在最坏的情况下,它是相同的代码(默认实现使用),但在更常见的情况下,如果你已经是一个集合,你将获得一个更好的拆分器,因此更好的流性能(甚至可能是良好的并行性)。它的代码也更少:spliteratorUnknownSize
Iterable
spliterator()
spliteratorUnknownSize
Iterable
StreamSupport.stream(iterable.spliterator(), false)
.filter(...)
.moreStreamOps(...);
如您所见,从中获取流(另请参阅此问题)并不是很痛苦。Iterable
如果可以使用番石榴库,从版本21开始,您可以使用
Streams.stream(iterable)