【发布时间】:2014-02-08 00:34:08
【问题描述】:
我正在尝试在 java 中创建一个笛卡尔积方法,该方法接受集合作为参数并返回一个集合对。我的代码将参数集转换为数组,然后进行笛卡尔积,但我无法将其添加回我想要返回的集合对。有没有更简单的方法来做到这一点?提前致谢。
public static <S, T> Set<Pair<S, T>> cartesianProduct(Set<S> a, Set<T> b) {
Set<Pair<S, T>> product = new HashSet<Pair<S, T>>();
String[] arrayA = new String[100];
String[] arrayB= new String[100];
a.toArray(arrayA);
b.toArray(arrayB);
for(int i = 0; i < a.size(); i++){
for(int j = 0; j < b.size(); j++){
product.add(arrayA[i],arrayB[j]);
}
}
return product;
}
【问题讨论】:
-
您从哪里获得
Pair课程?阿帕奇公地?无论如何,我认为您需要创建一个Pair<S,T>对象以用作product.add的参数。对于采用两个参数的集合,没有add方法。另外,我假设arrayA应该是S的数组,而不是String... 另外,您没有正确使用toArray;如果a小于100,它不会改变数组的长度,如果a更大,它不会做任何有用的事情。arrayA = a.toArray(new S[0]);更好,b类似。
标签: java set product cartesian