亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

Java中笛卡爾積的實現方法有哪些

小樊
84
2024-08-11 00:48:40
欄目: 編程語言

在Java中實現笛卡爾積可以使用循環嵌套、遞歸、流等方法。以下是幾種常見的實現方法:

  1. 循環嵌套:通過多層循環來遍歷每個集合中的元素,從而得到笛卡爾積。例如:
List<List<Integer>> sets = Arrays.asList(
        Arrays.asList(1, 2),
        Arrays.asList(3, 4),
        Arrays.asList(5, 6)
);

List<List<Integer>> cartesianProduct = new ArrayList<>();
for (int i = 0; i < sets.get(0).size(); i++) {
    for (int j = 0; j < sets.get(1).size(); j++) {
        for (int k = 0; k < sets.get(2).size(); k++) {
            List<Integer> tuple = Arrays.asList(sets.get(0).get(i), sets.get(1).get(j), sets.get(2).get(k));
            cartesianProduct.add(tuple);
        }
    }
}
  1. 遞歸:通過遞歸的方式來生成笛卡爾積。遞歸的方法在集合個數不確定或者數量很大時更靈活和方便。例如:
public static List<List<Integer>> cartesianProduct(List<List<Integer>> sets, int index) {
    if (index == sets.size() - 1) {
        return sets.get(index).stream()
                .map(Collections::singletonList)
                .collect(Collectors.toList());
    }

    List<List<Integer>> result = new ArrayList<>();
    for (int i : sets.get(index)) {
        for (List<Integer> rest : cartesianProduct(sets, index + 1)) {
            List<Integer> tuple = new ArrayList<>();
            tuple.add(i);
            tuple.addAll(rest);
            result.add(tuple);
        }
    }
    return result;
}
  1. 使用流:使用流的方式來實現笛卡爾積,代碼簡潔清晰。例如:
List<List<Integer>> sets = Arrays.asList(
        Arrays.asList(1, 2),
        Arrays.asList(3, 4),
        Arrays.asList(5, 6)
);

List<List<Integer>> cartesianProduct = sets.stream()
        .reduce((a, b) -> a.stream()
                .flatMap(i -> b.stream().map(j -> new ArrayList<>(Arrays.asList(i, j))))
                .collect(Collectors.toList()))
        .orElse(Collections.emptyList());

以上是幾種常見的Java實現笛卡爾積的方法,具體選擇哪種方法取決于具體的需求和場景。

0
桦南县| 克拉玛依市| 商洛市| 河源市| 苏州市| 理塘县| 南宁市| 合水县| 太仆寺旗| 龙井市| 周宁县| 中方县| 南召县| 抚松县| 鄯善县| 凤山县| 曲周县| 城市| 恩施市| 吕梁市| 视频| 东丽区| 佳木斯市| 兰考县| 西丰县| 五寨县| 布尔津县| 恭城| 锡林浩特市| 兰州市| 墨竹工卡县| 卢氏县| 瓦房店市| 宿迁市| 潼南县| 怀化市| 新邵县| 尼木县| 边坝县| 稻城县| 卫辉市|