用java实现笛卡尔积_Java实现笛卡尔积

用java实现笛卡尔积_Java实现笛卡尔积publicclassSingleton{privatestaticSingletonintance;privateSingleton(){}publicstaticSingletongetInstance(){/**一开始多线程进来,遇到锁,一个线程进去,是为空,new对象;后续线程进入,不为空,不操作;最后直接返回*对象不为/***笛卡尔积工具类….

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

public class Singleton { private static Singleton intance; private Singleton() {} public static Singleton getInstance() { /* * 一开始多线程进来,遇到锁,一个线程进去,是为空,new对象; 后续线程进入,不为空, 不操作;最后直接返回 * 对象不为

/**

* 笛卡尔积工具类.

*

*

*

*

* @author 啸白腥

* @since $Rev$

*

*/

public class CrossUtils {

// ~ Static Fields

// ==========================================================================

// ~ Fields

// ==========================================================================

// ~ Constructors

// ==========================================================================

// ~ Methods

// ==========================================================================

/**

* 产生笛卡尔积组合.

*

* @param crossArgs 信息组合。

*


* 格式:{

* { 1, 2, 3 },

* { a, b, c, d },

* { A, B, C },

* …

* }

*

*

* @return 笛卡尔积组合结果

*/

public static List> cross(List> crossArgs) {

// 计算出笛卡尔积行数

int rows = crossArgs.size() > 0 ? 1 : 0;

for (List data : crossArgs) {

rows *= data.size();

}

// 笛卡尔积索引记录

int[] record = new int[crossArgs.size()];

List> results = new ArrayList>();

// 产生笛卡尔积

for (int i = 0; i < rows; i++) {

List row = new ArrayList();

// 生成笛卡尔积的每组数据

for (int index = 0; index < record.length; index++) {

row.add(crossArgs.get(index).get(record[index]));

}

results.add(row);

crossRecord(crossArgs, record, crossArgs.size() – 1);

}

return results;

}

/**

* 产生笛卡尔积当前行索引记录.

*

* @param sourceArgs 要产生笛卡尔积的源数据

* @param record 每行笛卡尔积的索引组合

* @param level 索引组合的当前计算层级

*/

private static void crossRecord(List> sourceArgs, int[] record, int level) {

record[level] = record[level] + 1;

if (record[level] >= sourceArgs.get(level).size() && level > 0) {

record[level] = 0;

crossRecord(sourceArgs, record, level – 1);

}

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157620.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • centos7卸载MySQL_centos7下安装mysql

    centos7卸载MySQL_centos7下安装mysql**centos7下mysql卸载**1.关闭mysql服务servicemysqldstop2.删除mysql目录whereismysql——找到mysql目录rm-rfxxxxx——xxxxx代表mysql目录3.删除mysql相关配置文件my.cnf4.后记此方法针对于网络状况不好的服务器,不是yum或者rpm方法安装mysql的卸载同样有效…

    2022年9月30日
    3
  • Android 中arm64-v8a、armeabi-v7a、armeabi、x86简介~

    Android 中arm64-v8a、armeabi-v7a、armeabi、x86简介~LZ是一名96年Android小生,从14年9月培训出来到现在,差不多俩年多的时间,由于一些原因,没能好好把技术提升一下,实乃不该啊。了解起因昨天师傅问,你知道这俩个是什么么?有什么作用么?(如下图所示)现在还记得我那一脸蒙比的样子,诺诺的回答不晓得。师傅说这个是为了兼容一些手机,(此处省略滔滔不绝若干。。。)。听的我更加蒙比了,之前只是知道要把.so库扔进去,但是为什么扔,就不懂了,何谈我怎

    2022年6月10日
    45
  • 数电——超前进位加法器

    数电——超前进位加法器一、串行(行波)进位加法器进行两个4bit的二进制数相加,就要用到4个全加器。那么在进行加法运算时,首先准备好的是1号全加器的3个input。而2、3、4号全加器的Cin全部来自前一个全加器的Cou

    2022年7月1日
    36
  • Java集合容器面试题(2020最新版)「建议收藏」

    Java集合容器面试题(2020最新版)「建议收藏」文章目录集合容器概述什么是集合集合的特点集合和数组的区别使用集合框架的好处常用的集合类有哪些?List,Set,Map三者的区别?List、Set、Map是否继承自Collection接口?List、Map、Set三个接口存取元素时,各有什么特点?集合框架底层数据结构哪些集合类是线程安全的?Java集合的快速失败机制“fail-fast”?怎么确保一个集合不能被修改?Collection…

    2022年6月14日
    27
  • js选项卡效果

    js选项卡效果documentAPI getElementBy 返回具有指定 ID 属性值的第一个对象的一个引用 getElementsB 返回带有指定标签名的对象的集合 返回元素的顺序是它们在文档中的顺序 getElementsB 属性设置或返回元素的 class 属性 body 导航栏部分 HTML 代码 divclass box lt divclass box body

    2025年8月24日
    4
  • SpringMVC整合SwaggerUI

    SpringMVC整合SwaggerUISpringMVC 整合 SwaggerUI 文章目录 SpringMVC 整合 SwaggerUI 概念介绍相关资源下载编写整合代码 index html 文件修改 maven 中引入依赖 springmvc 配置文件中配置资源路径编写 swagger 配置文件效果展示整合时可能出现的异常问题分析问题解决总结参考资料网上介绍 Swagger 整合的文章很多 但都是东拼西凑 抄来抄去 讲不清楚重点 本文的目的就是希望那些从来没

    2025年11月28日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号