91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
德阳市| 怀远县| 芜湖县| 仁怀市| 天柱县| 深水埗区| 龙泉市| 建阳市| 偃师市| 白玉县| 客服| 通道| 德令哈市| 宁城县| 泾源县| 兴和县| 健康| 周口市| 扎赉特旗| 西昌市| 长乐市| 沈阳市| 佛冈县| 河曲县| 三亚市| 浙江省| 高清| 化德县| 天镇县| 资兴市| 兴海县| 巴彦淖尔市| 蒙城县| 西平县| 祁门县| 鸡西市| 吉水县| 绥宁县| 余江县| 通化县| 孟连|