我的问题是我有一个接收大量ArrayList的函数,我想循环遍历它们,但我不知道它们会有多少,它可以是任意数量的ArrayList。
此外,ArrayList具有不同的大小,它们的大小也可以是任何大小。
我找不到有类似问题的人,我发现所有人都已经知道了ArrayList的数量或者ArrayList的大小。
为了说明,我将展示一种可能的情况:
class A{
public ArrayList<String> chars = new ArrayList<>();
}
class C{
public ArrayList<A> A_objects = new ArrayList<>();
public void print(){
// Print all combinations of chars from the A_objects
}
}
A a1 = new A();
A a2 = new A();
a1.chars.add("x");
a1.chars.add("y");
a2.chars.add("X");
a2.chars.add("Y");
a2.chars.add("Z");
C c1 = new C();
c1.A_objects.add(a1);
c1.A_objects.add(a2);
c1.print();
我想要的是一种循环遍历ArrayList的方法,以便进行所有组合。该函数将打印,例如:
xX xY xZ yX yY yZ
请注意,print函数不知道'A_objects'的大小,也不知道'chars'ArrayList的大小,但它无论如何都必须遍历它们。
有没有办法实现这个目标?
谢谢大家的阅读,如果我做错了,我很抱歉,这只是我的第二个问题。
答案 0 :(得分:0)
您将需要两个嵌套循环。第一个依次得到每个A,第二个得到给定A的字符串列表中的每个字符串。 for-each循环使得大小在两个方面都不成问题。
public void print(){
for(A a : A_objects){
for(String s : a.chars){
System.out.print(s);
}
System.out.print(" ");
}
}
答案 1 :(得分:0)
循环通过第一个arraylist然后为arraylist循环的每个元素通过第二个arraylist。
示例:
for(A singlelist : arraylistoflists)
{
for(String element : singlelist.getYourArrayList())
{
//processing here
}
}
这只是您必须修改以使用您的课程的示例。
答案 2 :(得分:0)
我猜你需要某种合并方法。
为了更具可读性,我将删除A和C类以仅使用列表。
List<String> merge(List<String> first, List<String> second) {
if(first.isEmpty()) {return second;}
if(second.isEmpty()) {return first;}
List<String> result = new ArrayList<>();
for(String prefix : first) {
for(String suffix : second) {
result.add(prefix + suffix);
}
}
return result;
}
现在有一个打印方法:
public void print() {
List<String> all = new ArrayList<>();
for(A element : A_objects) {
all = merge(all, element.chars)
}
// now you just have to print
}
这未经过测试,但应该可以胜任。