当前位置: 首页 > 面试题库 >

使用Java 8 JDK将Iterable转换为Stream

元俊雅
2023-03-14
问题内容

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

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

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

任何想法如何将Iterable用作流而不转换为List?


问题答案:

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

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

如你所见,从中获取流Iterable(也请参见此问题)并不是很痛苦。



 类似资料:
  • 我有一个简单的循环,将元素从一个

  • 我有一个返回的接口。 然而迭代不能“流”。 知道如何使用迭代作为流而不将其转换为列表吗?

  • 本文向大家介绍在Java中将Iterator转换为Iterable,包括了在Java中将Iterator转换为Iterable的使用技巧和注意事项,需要的朋友参考一下 假设以下是具有整数值的迭代器- 现在,将Iterator转换为Iterable- 示例 以下是在Java中将Iterator转换为Iterable的程序- 输出结果

  • 问题内容: 在我的应用程序中,我使用3rd party库(确切地说是MongoDB的Spring数据)。 该库的方法返回,而我的其他代码则期望。 有什么实用方法可以让我快速将一个转换为另一个吗?我想避免foreach在代码中创建这么简单的循环。 问题答案: 在JDK 8+中,不使用任何其他库: 编辑:上面的是Iterator。如果您正在处理Iterable,

  • 基本上,我想读取Apache Ignite上的查询返回的所有值,该查询返回一个IgniteCursor。 我想以非阻塞的方式读取光标。 我可以写: 也许我错过了什么? 换句话说,有一种方法可以使用“异步非阻塞IO”从Ignite获取记录列表?

  • XML输入文件: XML输入文件转换为XML输出文件。将XML输入文件的firstName、middleName和lastName标签合并为XML Ouput文件的name标签,将XML输入文件的address1、address2、city、state和pincode标签合并为XML Ouput文件的address标签。 我几乎转换了代码,但我在这里与empId作斗争。我已经在XSLT文件中手动输