使用Java 8合并流

mic*_*cgn 1 lambda java-8 java-stream

在阅读了关于流的内容后,我现在尝试使用它们,并且已经通过简单的示例出现了第一个问题.我想实现一个非常简单的加密算法,它使用替换.有一些文本需要加密:

static List<Integer> text = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
        11, 12, 13, 14, 15, 16, 17, 18, 19, 20);
Run Code Online (Sandbox Code Playgroud)

有一些密码:

private List<Integer> password = Arrays.asList(1, 5, 7, 3);
Run Code Online (Sandbox Code Playgroud)

现在的想法是将密码值添加到文本值.结果应该是

1 + 1,2 + 5,3 + 7,4 + 3,5 + 1,6 + 5 ......

所以我必须从密码创建一个流,它从到达上面列表末尾的开头开始.这部分我已经设法做到了.

现在我不得不将2个流合并为1个流.任何想法,如何实现?

ass*_*ias 5

我可能会在这里输入索引:

IntStream.range(0, text.size())
         .map(i -> text.get(i) + password.get(i % password.size())
         .toArray();
Run Code Online (Sandbox Code Playgroud)

  • @Roland:是的,但你也可以使用`mapToObj`而不是`map`,然后你不需要调用`boxed()`.或者您使用`toArray()`而不是`collect(toList())`,因为OP之后没有指定如何处理`Stream`. (3认同)