在我的 java 函数中,我想使用列表作为参数,例如列表 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
}
最佳答案
使用循环更改列表数据会引发并发修改错误,请使用Iterator
而不是循环更改列表数据。迭代器允许修改数据。
void functionFillList(List list1){
Iterator<String> iter = list1.iterator();
while(iter.hasNext()){
//do something
}
//change one value of list1
functionFillList(list1);
//if every combination was called -> end function
}
关于Java - 使用递归用其他列表作为函数参数填充列表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55573883/