【发布时间】:2019-08-29 15:06:51
【问题描述】:
在我的 java 函数中,我想使用一个列表作为参数,例如 List 1 = (a,b,c)。 其中每个值都是来自另一个列表的值,List 2 = (1, 2, 3)。现在我想用所有可能的组合来调用我的函数来填充它。
如 a=1, b=1, c=1; a=1,b=2,c=1; a=1、b=3、c=1 等
问题是每次调用函数时列表长度都会更改。
通常我会使用两个 for 循环,或者一个简单的递归函数。 但我不知道如何准确处理不断变化的列表长度。也许我的问题很广泛,我的问题是不知道如何只更改列表中的一个值,直到调用每个组合。
我想象的函数看起来像这样: (我知道带有 for 循环的函数不起作用,我必须使用迭代器)
List 1 = (a,b,c);
List 2 = (1,2,3);
list1.set(a, 1);
list1.set(b, 1);
list1.set(c, 1);
functionFillList(List list1){
for(Element e : list1){
//do something
//in some cases add elements to list2
}
//change one value of list1
functionFillList(list1);
//if every combination was called -> end function
}
【问题讨论】:
-
列表有什么变化?是在末尾添加或删除了新元素,还是在中间或前面更新或更改了一些元素?如果您为列表 1 的一个元素访问了列表 2 的所有元素,然后将一个元素添加到列表 2,您是否还需要计算那些缺失的排列?以及如何/为什么更改列表?
-
包含组合值的列表 2 在函数本身中发生了更改。使用迭代器,您只需要将元素本身添加到迭代器中。最后我可能会使用迭代器,但为了简单起见,我在这里使用了 for 循环。
-
你想要的最终结果是什么
-
我想看看这个组合是否满足某个条件。然后在list2中添加一个新元素。