public class Test1 {
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void main(String[] args) {
ArrayList l1 = new ArrayList();
l1.add(1);
l1.add(2);
l1.add(3);
ArrayList l2 = new ArrayList();
l2.add("a");
l2.add("b");
ArrayList l3 = new ArrayList();
l3.add("+");
l3.add("-");
ArrayList ls = new ArrayList();
ls.add(l1);
ls.add(l2);
ls.add(l3);
List list = Dikaerji0(ls);
System.out.println(list.size());
for (Object object : list) {
System.out.println(object);
}
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public static ArrayList Dikaerji0(ArrayList al0) {
ArrayList a0 = (ArrayList) al0.get(0);// l1
ArrayList result = new ArrayList();// 组合的结果
for (int i = 1; i < al0.size(); i++) {
ArrayList a1 = (ArrayList) al0.get(i);
ArrayList temp = new ArrayList();
// 每次先计算两个集合的笛卡尔积,然后用其结果再与下一个计算
for (int j = 0; j < a0.size(); j++) {
for (int k = 0; k < a1.size(); k++) {
ArrayList cut = new ArrayList();
if (a0.get(j) instanceof ArrayList) {
cut.addAll((ArrayList) a0.get(j));
} else {
cut.add(a0.get(j));
}
if (a1.get(k) instanceof ArrayList) {
cut.addAll((ArrayList) a1.get(k));
} else {
cut.add(a1.get(k));
}
temp.add(cut);
}
}
a0 = temp;
if (i == al0.size() - 1) {
result = temp;
}
}
return result;
}
}
分享到:
相关推荐
在实际应用中,可能需要对结果进行优化,例如使用Set避免重复,或者使用Stream API来简化代码。此外,对于大数据量的输入,还需要考虑性能优化,如使用并行计算或记忆化搜索等技术。 总结来说,从n个数组中取出所有...
说明:本人前段时间遇到的求n个数组的所有排列组合的问题,发现笛卡尔积算法可以解决,但是网上搜索的只有Java版本的实现,于是自己试着用python实现,由于新手代码不太规范。 代码:本人封装了一个类Cartesian...
在Java中,可以使用`ArrayList`配合`Collections.swap()`,C#中可使用`List<T>`配合`Swap()`方法。 4. **位运算**: 利用位运算,我们可以创建一个二进制数,每一位代表一个字符是否被选中。通过遍历所有可能的二...
本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...
4. 关系运算的时间复杂度:在关系运算中,笛卡尔积(D.)通常是最耗时的操作,因为它涉及所有记录的组合。 5. 列表框引用:引用列表框的最后一项,应使用 List1.List(List1.ListCount-1),因为ListCount表示列表框...
6. 集合运算:在数据库理论中,基本的集合运算是并集(Union)、交集(Intersection)、差集(Difference)以及笛卡尔积(Cartesian Product)。 7. List和Set接口:Collection接口的两个主要子接口是List和Set。...
例如,在Windows的“我的电脑”中,用户可以通过“查看”菜单下的“排列图标”命令来按照不同的标准(如名称、大小、日期等)对文件进行排序。 ### 12. 计算机硬件识别的语言 - **知识点解析**:计算机硬件可以...
- **解析**: 条件连接是在两个关系的笛卡尔积基础上,根据一定的条件筛选出符合条件的元组。 #### 7. Visual FoxPro中的EXIT语句 - **知识点**: Visual FoxPro是一种关系型数据库管理系统,支持多种控制流程语句。...