1

我有大量的 ArrayList,我希望能够使用 for 循环来操作它们。如果它们被命名为 p1,p2,p3 ... pn,我如何使用循环而不是为所有这些执行诸如 .get(0) 之类的任务

p1.get(0);
p2.get(0);
p3.get(0);
pn.get(0);
4

4 回答 4

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));
        }
    }
}
于 2013-08-14T23:50:26.140 回答
1

把你ArrayList的 s 放在一个ArrayList. for循环访问它们,然后调用get(0)您检索的ArrayList.

于 2013-08-14T23:46:42.037 回答
1

您可以将它们全部放入一个列表并循环它们

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

for ( ArrayList list : lists ) {
   list.get(0);
}
于 2013-08-14T23:47:07.537 回答
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);

如果您的意思是这些数组的数量是可变的,并且您想选择动态访问的数组,您可以使用原始 ArrayList 的 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()如果您使用省略号参数,您还可以实现采用可变数量的源数组。

我希望其中之一是有帮助的。

于 2013-08-14T23:51:37.700 回答