小编典典

编辑:删除了两组的以前的解决方案。有关详细信息,请参见编辑历史记录。

这是一种对任意数量的集合进行递归处理的方法:

public static Set> cartesianProduct(Set>... sets) {

if (sets.length < 2)

throw new IllegalArgumentException(

"Can't have a product of fewer than two sets (got " +

sets.length + ")");

return _cartesianProduct(0, sets);

}

private static Set> _cartesianProduct(int index, Set>... sets) {

Set> ret = new HashSet>();

if (index == sets.length) {

ret.add(new HashSet());

} else {

for (Object obj : sets[index]) {

for (Set set : _cartesianProduct(index+1, sets)) {

set.add(obj);

ret.add(set);

}

}

}

return ret;

}

请注意,不可能将任何通用类型信息与返回的集一起保留。如果你事先知道要使用多少个集合,则可以定义一个通用元组来容纳那么多元素(例如Triple),但是在Java中无法拥有任意数量的通用参数。

2020-03-01

笛卡尔积 java_Java中任意集的笛卡尔积相关推荐

  1. java求任意个数集合的笛卡尔积,Java中任意集的笛卡尔积

    繁华开满天机 删除了两个集合的先前解决方案.有关详细信息,请参阅编辑历史记录.这里有一种方法可以递归地对任意数量的集合执行此操作:public static Set> cartesianProd ...

  2. Python 轻松解决从 K 个字符串数组中任意取一个字符串,按顺序拼接,列出所有可能的字符串组合。(对比用库和不用库的方法)

    文章目录 一.问题说明 二.解决方法 一.问题说明 问题来源:粉丝的提问 从 K 个字符串数组中任意取一个字符串,按顺序拼接,列出所有可能的字符串组合(对比用库和不用库的方法) 二.解决方法 iter ...

  3. 2022年阿里全球数学竞赛中的集福活动(附代码解答)

    预赛中的一道题目:春节期间,牛奶公司推出了新春集福活动:每盒牛奶都附赠一个红包,红包中藏有下列"虎","生","威"中的一款图案,集齐两个& ...

  4. 《盗墓笔记》使用的这套技术,让美术可以在场景中任意使用灯光

    手游中的氛围想要渲染得好,光照是重中之重.游族网络的手游大作<盗墓笔记>,包含大量的地下多光源渲染场景以及地上丰富唯美的光影效果,他们是如何处理好多光源光照渲染,增加打灯数量的同时降低Dr ...

  5. DistCp迁移Hive数据过程中源集群增加删除文件等场景测试

    1 概述   由于在数据迁移过程中,上层任务仍在运行,会出现源集群新增文件及删除文件的情况,因此进行测试 2 需要同步的数据文件说明   源集群:192.168.40.100:8020,目标集群:19 ...

  6. Tips--利用shell脚本批量提取txt文件中任意字段

    利用shell脚本批量提取txt文件中任意字段 前言 0. 一个例子 1. cat命令 2. '|'符号与'>'符号 3. grep命令 4. awk命令 前言 对于测试中出现的log,我们经常 ...

  7. 第k大的数python代码_Python实现查找数组中任意第k大的数字算法示例

    本文实例讲述了Python实现查找数组中任意第k大的数字算法.分享给大家供大家参考,具体如下: 模仿partion方法,当high=low小于k的时候,在后半部分搜索,当high=low大于k的时候, ...

  8. python替换UTF-8编码文本中任意特殊字符,包括中文符号问题:大量文本,将其中的特殊字符用空

    python替换UTF-8编码文本中任意特殊字符,包括中文符号问题:大量文本,将其中的特殊字符用空 python替换UTF-8编码文本中任意特殊字符,包括中文符号 问题: 大量文本,将其中的特殊字符用 ...

  9. Hadoop架构中各个集群在开发中的作用

    学习大数据,如果只是零零散散地学习各个模块,就会深陷其中,很难深入了解hadoop架构中各个集群的作用.那么在实际开发中,究竟是怎样的一个流程呢?先看下面一张流程图: 接下来就用一些大白话,来讲解每个 ...

最新文章

  1. 算法-电话号码的字母组合
  2. mysql建表的auto_increment_koa2+koa+mysql快速搭建nodejs服务器
  3. 万万没想到,枯燥的“机器学习”还可以这样学!
  4. 当AR落地B端行业应用,它的无限可能在哪?
  5. Fiddler 学习笔记---命令、断点
  6. php unset函数_PHP | 使用unset()函数从数组中删除元素
  7. ElasticSearch快速入门(一)介绍
  8. Linux Shell编程笔记8 进程
  9. 关于androidstudio获取shal的总结
  10. sqlserver如何修改服务器排序规则,修改sqlserver2008数据库的排序规则 (转)
  11. 关于全球时间的一点理解
  12. ubuntu微信中输入乱码解决
  13. Mysql数据库的分离和附加
  14. 我开发了一个机器人应用,让 HEXA 机器人可以追逐光——HEXA The Light Chaser
  15. spdif数字传输规范
  16. 单片机反相器_AVR单片机在工业控制系统中的应用
  17. 【web前端开发】数据库MySQL在开发环境的操作
  18. 织梦php实现评论,织梦文章评论功能的使用
  19. mybatis延迟加载、缓存(一级、二级)
  20. 免费参加世界杯球迷活动

热门文章

  1. Python 1.3 输出“人生苦短,我学Python”
  2. Unity - Optimize Mesh Data 导致的 Mesh 顶点数据(法线、切线、UV2~8,Color0~7,等)丢失
  3. 7-2 微博昵称的冒泡排序
  4. 转载:――放心油条自己做
  5. 【python小课堂专栏】python小课堂15 - 史上最详细的包和模块import讲解篇
  6. 有容乃大-----C语言
  7. 通过方法实现学生和专业关联
  8. 宗次郎 The Great Yellow River II 大黄河2
  9. linux用户环境变量配置文件问题 profile 和 ~/.bashrc区别
  10. 透明细胞肾细胞癌的发生及致死性机制(2021)