我有2个阵列(T0,T1,T2)& (R1,R2,R3)我想要它们的所有27种组合,例如:
R1-T1, R1-T2, R1-T3
R1-T1, R1-T2, R2-T3
R1-T1, R1-T2, R3-T3
R1-T1, R2-T2, R1-T3
R1-T1, R2-T2, R2-T3
R1-T1, R2-T2, R3-T3
....
我知道如何使用3 for循环,但我需要更灵活的东西,可以使用不同数量的数组(例如(T0,... T8)和(R1,R2))。
由于
答案 0 :(得分:1)
为什么3个for循环?
for(int i : array1) {
for(int j : array2) {
combinations.add(new Combination(i, j));
}
}
就像一个例子......
答案 1 :(得分:1)
在Java 8中,您可以平面化元素流并构建它们对,如下所示:
final List<Integer> first = Arrays.asList(1, 2, 3);
final List<Integer> second = Arrays.asList(1, 2, 3);
first.stream()
.flatMap(x -> second.stream().map(y -> Tuple.tuple(x, y)))
.forEach(System.out::println);
答案 2 :(得分:0)
简单的方法是将数组转换为集合,然后使用Google Guava http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Sets.html#cartesianProduct(java.util.List)
获得笛卡尔积。 它有一个方便的Array方法 - &gt;设置:newHashSet(E ... elements)
你应该考虑使用“标准”libarys来重新发明轮子。