【发布时间】:2014-09-16 15:25:23
【问题描述】:
我有一个程序可以动态访问不同的方法,每个方法都有不同数量的参数。我需要找到一种方法来排列这些参数的数千种不同排列,但我不确定如何动态循环这些排列。
例如,对于一个有两个参数的函数,我可以像这样遍历排列:
public static void main(String[] args) {
List<Object[]> params = new ArrayList();
params.add(new Integer[]{1,2,3});
params.add(new Boolean[]{false,true});
runCalculation("function1",params);
}
public void runCalculation(String functionName, List<Object> parameters){
for(Object i : parameters.get(0)){
for(Object j : parameters.get(1)){
//Do reflection function call with (i,j) as parameters
}
}
}
但是,如果我要让下一个要运行的函数使用 3 个参数,这将不再遍历所有排列。如何使用动态数量的 for 循环来正确处理包含参数值的数组列表?我认为递归是实现此类事情的唯一方法,但我仍在努力想出一个正确的解决方案,该解决方案将正确地为每个函数提供动态数量的参数,然后为这些参数提供不同的类型。
【问题讨论】:
-
也许您需要递归而不是 for 循环?
-
你想要的不是
permutation,而是cartesian product或n-ary product(我会尽快添加答案)
标签: java arrays list recursion