首页 > Java > java教程 > 正文

如何将迭代器转换为流而不创建不必要的副本?

Patricia Arquette
发布: 2024-11-06 13:11:02
原创
189 人浏览过

How can I convert an Iterator to a Stream without creating unnecessary copies?

将迭代器转换为流而不进行复制

将迭代器转换为流对于利用流的强大功能非常有用,而无需创建不必要的原始收藏的副本。然而,出于性能原因,避免复制至关重要。

一种有效的方法是利用 Java 的 Spliterator 接口。我们可以从迭代器创建一个 Spliterator,为我们的流提供基础:

<code class="java">Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator();
Stream<String> targetStream = StreamSupport.stream(
          Spliterators.spliteratorUnknownSize(sourceIterator, Spliterator.ORDERED),
          false);</code>
登录后复制

另一种选择(有些人可能会发现更具可读性)是使用 lambda 从迭代器创建 Iterable,因为 Iterable 是一个函数式接口:

<code class="java">Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator();

Iterable<String> iterable = () -> sourceIterator;
Stream<String> targetStream = StreamSupport.stream(iterable.spliterator(), false);</code>
登录后复制

此方法无需中间列表,确保迭代器高效转换为流。

以上是如何将迭代器转换为流而不创建不必要的副本?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!