java flatmap笛卡尔乘积
时间: 2024-02-04 19:09:19 浏览: 84
在Java中,可以使用flatMap方法来实现列表的笛卡尔乘积。flatMap方法是Stream类的一个方法,它可以将一个流中的每个元素映射为一个流,并将这些流连接起来形成一个新的流。
下面是使用flatMap方法实现Java列表的笛卡尔乘积的示例代码:
```java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class CartesianProduct {
public static void main(String[] args) {
List<List<String>> inputLists = new ArrayList<>();
inputLists.add(Arrays.asList("A", "B", "C"));
inputLists.add(Arrays.asList("a1", "b1", "c1"));
List<List<String>> cartesianProductList = inputLists.stream()
.reduce((list1, list2) -> list1.stream()
.flatMap(element1 -> list2.stream()
.map(element2 -> Arrays.asList(element1, element2)))
.collect(Collectors.toList()))
.orElse(new ArrayList<>());
System.out.println(cartesianProductList);
}
}
```
输出结果为:
```
[[A, a1], [A, b1], [A, c1], [B, a1], [B, b1], [B, c1], [C, a1], [C, b1], [C, c1]]
```
这个示例中,我们首先创建了一个包含两个列表的列表inputLists。然后,我们使用flatMap方法将这两个列表的元素进行组合,得到笛卡尔乘积的结果。
阅读全文