用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python生成器详解_自动生成python代码

    python生成器详解_自动生成python代码生成器利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。

    2022年7月31日
    53
  • mysql explain扫描行数_mysql explain扫描行数问题

    mysql explain扫描行数_mysql explain扫描行数问题MySQL的Explain的Type中,Rang跟Ref有什么区别?type中的各个意思|ALL|全表扫描|index|索引全扫描|range|索引范围扫描。mysqlexplaintypeindex和ref的区别type=index,索引全扫描,MySQL遍历整个索引来查询匹配的行:selectusernamefromuser;type=ref,使用非唯一…

    2022年10月8日
    1
  • ADRC学习笔记( 一)[通俗易懂]

    ADRC学习笔记( 一)[通俗易懂]近期正在自学自抗扰技术,不得不感叹韩老师乃神人也!话不多说先把这两天的学习成果与大家分享,后续在做详细的介绍。欢迎大家批评指正。(1)过渡过程输入一个阶跃信号,其跟踪效果如图所示,可以看到毫无超调。(2)扩张状态观测器(3)非线性组合(4)整个控制器结构最后附上学习的资料,需要的小伙伴自取,simulink仿真和matalb仿真代码也会陆续分享出来,敬请关注。自抗扰学习资料…

    2022年5月12日
    33
  • sql数据库嵌套查询_select嵌套查询

    sql数据库嵌套查询_select嵌套查询嵌套查询是将一个select查询放到另一个查询的where子句中去如:查询”xx“同学的所修课程及分数1.先选择姓名为”xx”的同学的学号select学号from学生where姓名=“XX”2.根据学号来选择相关字段select课程名,分数from成绩where学号=根据1,2合并select课程名,分数from成绩where学号=(select学号from…

    2022年8月10日
    7
  • mpc hc设置_mpc是指什么

    mpc hc设置_mpc是指什么MPC-HC播放器设置启动 MPC-HC ,先设置语言:(最新版本会自动选择对应的系统语言)View-Language-Chinese=>界面变为中文进 视图-选项:播放器:建议勾选「保存设置至.ini文件中」格式:建议勾选全部视频类格式,其中 QuickTime 建议采用「DirectShow」滤镜(双击右侧,在下拉框中即可选择),播放性能会

    2022年9月14日
    0
  • 推荐一个shell语法在线检查网站,也可以学习shell语法

    推荐一个shell语法在线检查网站,也可以学习shell语法https://www.shellcheck.net

    2022年7月13日
    16

发表回复

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

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