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的、流式的方法 :-)
注意
我不想压缩这些流
"zip"操作将从每个集合中获取一个元素并将它们组合。
zip操作的结果会像这样:(不需要的)
// onetwo
// threefour
// fivesix
zip
函数,可以执行Stream<String> result = zip(a, b, (e, z) -> Stream.of(e, z)).flatMap(x -> x);
以获得所需的结果。 - Ousmane D.interleave
方法,它本质上是将zip
方法包装起来以提高可读性等方面的优化。我已经投票重新开放,所以你可以在这里发布而不是外部... - Ousmane D.