在Java中,可以使用并行流來計算笛卡爾積。以下是一種使用并行流計算笛卡爾積的方法:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class CartesianProduct {
public static void main(String[] args) {
List<List<Integer>> sets = Arrays.asList(
Arrays.asList(1, 2, 3),
Arrays.asList(4, 5),
Arrays.asList(6, 7)
);
List<List<Integer>> cartesianProduct = cartesianProduct(sets);
cartesianProduct.forEach(System.out::println);
}
public static List<List<Integer>> cartesianProduct(List<List<Integer>> sets) {
return sets.stream()
.reduce((set1, set2) -> set1.stream()
.flatMap(i -> set2.stream().map(j -> Arrays.asList(i, j)))
.collect(Collectors.toList()))
.orElse(Arrays.asList());
}
}
在這個例子中,我們定義了一個方法cartesianProduct
來計算給定集合的笛卡爾積。我們傳入一個包含多個集合的列表,通過使用并行流和flatMap操作來計算笛卡爾積。最終返回一個包含所有笛卡爾積元素的列表。