在Java中循环遍历几个不同大小的列表

时间:2014-09-24 15:38:01

标签: java loops arraylist

我的问题是我有一个接收大量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的大小,但它无论如何都必须遍历它们。

有没有办法实现这个目标?

谢谢大家的阅读,如果我做错了,我很抱歉,这只是我的第二个问题。

3 个答案:

答案 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

}

这未经过测试,但应该可以胜任。