中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
商城县| 饶平县| 蓬安县| 卢龙县| 明水县| 鄯善县| 德江县| 庆云县| 龙胜| 鹿邑县| 唐海县| 梧州市| 西藏| 连江县| 乐昌市| 芒康县| 涞源县| 赣榆县| 青阳县| 平塘县| 合阳县| 沙雅县| 资阳市| 隆安县| 博罗县| 龙江县| 宁蒗| 香格里拉县| 宁陵县| 绥阳县| 崇仁县| 孝义市| 大厂| 京山县| 鄂托克前旗| 平陆县| 富民县| 巴林右旗| 玉溪市| 托克托县| 玉林市|