栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 实现笛卡尔积计算

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 实现笛卡尔积计算

代码
    // 实现思路计算当前第N个List和前面N-1个List的笛卡尔积集合的笛卡尔积集合
    public static  List> cartesianProduct(List> data){
        List> res = null; // 结果集(当前为第N个List,则该处存放的就为前N-1个List的笛卡尔积集合)
        for (List list: data){ // 遍历数据
            List> temp = new ArrayList<>(); // 临时结果集,存放本次循环后生成的笛卡尔积集合
            if (res == null){ // 结果集为null表示第一次循环既list为第一个List
                for (T t: list){ // 便利第一个List
                    // 利用stream生成List,第一个List的笛卡尔积集合约等于自己本身(需要创建一个List并把对象添加到当中),存放到临时结果集
                    temp.add(Stream.of(t).collect(Collectors.toList()));
                }
                res = temp; // 将临时结果集赋值给结果集
                continue; // 跳过本次循环
            }
            // 不为第一个List,计算前面的集合(笛卡尔积)和当前List的笛卡尔积集合
            for (T t: list){ // 便利
                for (List rl: res){ // 便利前面的笛卡尔积集合
                    // 利用stream生成List
                    temp.add(Stream.concat(rl.stream(), Stream.of(t)).collect(Collectors.toList()));
                }
            }
            res = temp; // 将临时结果集赋值给结果集
        }
        // 返回结果
        return res;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/351215.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号