zak*_*mck 5 java-8 java-stream
假设我有一个 Java 8 流数组:Stream<T>[] streams,我想创建一个 Stream,其中新流的每个元素都是一个数组,由从每个初始基本流中选取一个元素组成(假设它们都是连续的) )。
例如,如果我有:
streams [ 0 ] returning: ( "A", "B", "C" ),
streams [ 1 ] returning ( "X", "Y", "Z" )
and streams [ 2 ] as ( "0", "1", "2" )
Run Code Online (Sandbox Code Playgroud)
我想要一个返回的流
( { "A", "X", "0" }, { "B", "Y", "1" }, { "C", "Z", "2" } )
Run Code Online (Sandbox Code Playgroud)
是否有一些代码已经实现了这一点?我有一个如何去做的想法,这将是对 case的概括,但我想知道是否已经存在可重用的东西。
编辑:对不起,我意识到我需要澄清一下:
我不想创建整个矩阵,我想要一个每次动态返回一行的流(首先是 A/X/0,然后是 B/Y/1 等),而不必占用所有行的内存提前。我对基本流的大小做出合理的假设很好(例如,取最小值,一旦有没有更多元素要返回的流就停止)。
我知道这可以通过首先将基本流转换为迭代器,然后创建一个新的迭代器来实现,其中 next() 从每个下划线迭代器中选择一个元素并返回一个新行。这就是我上面链接的配对示例所做的,我可以自己实现它,在这里我试图了解它是否已经在某个库中完成(我知道 JDK 没有这样的功能)。
好吧,好像没有这样的东西,所以我自己写了:
单元测试中提供了使用示例(此处和此处),这些类是此实用程序包的一部分。
编辑:在 Federico 发表评论后,我添加了 Spliterator 实现,注意到Iterator基于 - 的版本不能并行。
| 归档时间: |
|
| 查看次数: |
3426 次 |
| 最近记录: |