美文网首页
Java 代码获取笛卡尔积

Java 代码获取笛卡尔积

作者: 梅村_9643 | 来源:发表于2020-05-28 09:56 被阅读0次

    做商城的时候涉及到商品的多个小时属性
    比如 属性 1 颜色 属性值 1白色 2黑色
    属性 2 内存 属性值 3 32G 4 64G
    这样 获取的笛卡尔积为 白色 32G 白色 64G 黑色 32G 黑色 64G
    对应 的数组 为 [1,3] [1,4] [2,3] [2,4]
    实现方法为:

    public class Descartes {
        public  static void descartes(List<List<Long>> dimvalue, List<List<Long>> result, int layer, List<Long> curList) {
            if (layer < dimvalue.size() - 1) {
                if (dimvalue.get(layer).size() == 0) {
                    descartes(dimvalue, result, layer + 1, curList);
                } else {
                    for (int i = 0; i < dimvalue.get(layer).size(); i++) {
                        List<Long> list = new ArrayList<Long>(curList);
                        list.add(dimvalue.get(layer).get(i));
                        descartes(dimvalue, result, layer + 1, list);
                    }
                }
            } else if (layer == dimvalue.size() - 1) {
                if (dimvalue.get(layer).size() == 0) {
                    result.add(curList);
                } else {
                    for (int i = 0; i < dimvalue.get(layer).size(); i++) {
                        List<Long> list = new ArrayList<Long>(curList);
                        list.add(dimvalue.get(layer).get(i));
                        result.add(list);
                    }
                }
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:Java 代码获取笛卡尔积

          本文链接:https://www.haomeiwen.com/subject/pqroahtx.html