如何使用Java 8实现一个函数来获取多个流,并生成一个流,其中每个元素都是流的笛卡尔积中的一个成员的列表?我查看了这个问题:这个问题 - 这个问题使用一个聚合器,它是一个二元运算符(取两个相同类型的项目并生成一个相同类型的项目)。 我想最终结果中的项应为List而不是输入流中元素的类型。
具体而言,假设我的期望函数名为product,则以下内容:
具体而言,假设我的期望函数名为product,则以下内容:
Stream<List<String>> result =
product(
Stream.of("A", "B", "C", "D"),
Stream.of("I", "J", "K"),
Stream.of("Y", "Z")
);
result.forEach(System.out::println);
应该打印:
[A, I, Y]
[A, I, Z]
[A, J, Y]
[A, J, Z]
[A, K, Y]
[A, K, Z]
[B, I, Y]
...
[D, K, Y]
[D, K, Z]
理想情况下,我希望这个操作尽可能地懒惰。例如,如果输入流是由Stream.generate()
生成的,那么如果能够在绝对需要的时候才执行这些流的提供方,那就太棒了。