【发布时间】:2019-04-17 20:39:46
【问题描述】:
Stream<String> a = Stream.of("one", "three", "five");
Stream<String> b = Stream.of("two", "four", "six");
我需要做什么才能使输出如下?
// one
// two
// three
// four
// five
// six
我查看了concat,但正如 javadoc 解释的那样,它只是一个接一个地附加,它不会交错/穿插。
Stream<String> out = Stream.concat(a, b);
out.forEach(System.out::println);
创建一个惰性连接流,其元素都是 第一个流的元素,然后是 第二个流。
错误地给予
// one
// three
// five
// two
// four
// six
如果我收集它们并进行迭代可以做到,但希望有更多的 Java8-y、Streamy :-)
注意
我不想压缩流
“zip”操作将从每个集合中取出一个元素并将它们组合起来。
zip 操作的结果是这样的:(不需要的)
// onetwo
// threefour
// fivesix
【问题讨论】:
-
zip是用来组合元素的,我不想组合元素,我想保持元素总数不变
-
为什么 zip 不能保持相同的元素总数?
-
读取另一个线程,zip 总是采用一个 zipper 函数来组合每个流中的一个元素以创建一个新元素。我只想交错而不是压缩
-
对于未来来到这里的任何人,这里是 cmets + 重定向答案:gist.github.com/blundell/3f062b8ec55fd1906c68e6ec8d848683
-
我喜欢
interleave方法的创建,它基本上包装了zip方法以提高可读性等。我已投票决定重新开放,因此您可以在此处发布而不是在外部发布...
标签: java java-8 functional-programming java-stream