使用循环操作多个ArrayLists

时间:2013-08-14 23:44:20

标签: java arraylist

我有大量的ArrayLists,我希望能够使用for循环来操作它们。如果将它们命名为p1,p2,p3 ... pn,如何使用循环而不是

为所有这些任务执行诸如.get(0)之类的任务
p1.get(0);
p2.get(0);
p3.get(0);
pn.get(0);

4 个答案:

答案 0 :(得分:2)

public class ListsExample {

    public static void main(String[] args) {
        List<Integer> p1 = Arrays.asList(1,2,3,4,5);
        List<Integer> p2 = Arrays.asList(1,2,3,4,5);
        List<Integer> p3 = Arrays.asList(1,2,3,4,5);
        List<List<Integer>> lists = new ArrayList<List<Integer>>();
        lists.add(p1);
        lists.add(p2);
        lists.add(p3);

        for(List<Integer> list : lists){
            System.out.println(list.get(0));
        }
    }
}

答案 1 :(得分:1)

ArrayList放入ArrayList。在for循环中访问它们,然后在您检索的get(0)上致电ArrayList

答案 2 :(得分:1)

您可以将它们全部放入列表并循环遍历

List<ArrayList> lists = new LinkedList<ArrayList>();
lists.add(p1);
lists.add(p2);

for ( ArrayList list : lists ) {
   list.get(0);
}

答案 3 :(得分:0)

你的问题不清楚。如果你的意思是如何在循环中访问四个独立的数组......

for (int i = 0; i < ...; ++ i) {
    p1.get(i);
    p2.get(i);
    p3.get(i);
    pn.get(i);
}

如果你的意思是你有四个相同大小的数组并且你想要更方便地将数据组合在一起,那么就放弃这四个区域,创建一个带有相关字段的类来代替存储数据,并使用单个数组的是:

class Item {
    Whatever v1;
    Whatever v2;
    Whatever v3;
    Whatever vn;
}

ArrayList<Item> items = ...;
items.get(0);

如果您的意思是您拥有可变数量的这些数组并且您想要选择动态访问哪一个数组,则可以使用原始ArrayLists的ArrayList:

List<ArrayList<Whatever>> p = getListOfAllMyArrayLists();
p.get(n).get(0);

如果你想出于某些原因想要保留所有单独的数组(也许你不能重构)并且想要一种方便的方法来一次访问所有数据,你可以编写一个方法来实现这一点并将结果打包到他们自己的数组,例如:

public List<Whatever> getAll (int x) {
    List<Whatever> values = new ArrayList<Whatever>();
    values.add(p1.get(x));
    values.add(p2.get(x));
    values.add(p3.get(x));
    values.add(pn.get(x));
    return values;
}

如果使用省略号参数,也可以实现getAll()来获取可变数量的源数组。

我希望其中一个有用。