我的问题是创建算法来接收我稍后与文件中的记录进行比较的属性值的 n 元素组合。我用 Java 编写代码,属性值表表示为 LinkedList< LinkedList< String [ 2 ] > > (当然我可以更改此表示)。示例表可能如下所示:
对于一个元素的组合,编写三个嵌套的 for 循环就足够了,但是如何处理 n=elements 的组合呢?不允许相同属性和相同属性值的组合。
我的问题是创建算法来接收我稍后与文件中的记录进行比较的属性值的 n 元素组合。我用 Java 编写代码,属性值表表示为 LinkedList< LinkedList< String [ 2 ] > > (当然我可以更改此表示)。示例表可能如下所示:
对于一个元素的组合,编写三个嵌套的 for 循环就足够了,但是如何处理 n=elements 的组合呢?不允许相同属性和相同属性值的组合。
如果你想要n
嵌套循环,你可以使用递归。
然而,一个更简单的处理方法可能就是像这样循环:
LinkedList<LinkedList<String>> L;
// Init L
// begin looping
int N = 1;
for(LinkedList<String> l in L)
N *= l.length;
for(int i = 0; i < N; i++){
int[] chooseWhich = new int[L.length];
for(int j = 0; j < L.length; j++){
chooseWhich[j] = i % L[j].length;
i /= L[j].length;
}
// at this stage, you have the i-th column chosen to be chooseWhich[i]
// do whatever you want just as you have nested n loops
}
顺便说一句,我刚刚意识到 LinkedList 没有长度,但你很多改变使用数组。或者您可以自己在某处维护链表的长度。