Java:两个数组的每个组合

时间:2014-10-16 11:06:32

标签: java

我有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))。

由于

3 个答案:

答案 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来重新发明轮子。