1

迭代 ArrayList 行值的最简单方法是什么?

例如我有两个ArrayList

ArrayList<Object> main = new ArrayList<Object>();
ArrayList<Object> row = new ArrayList<Object>();

我使用两个fors 将值添加到 main.js 中。首先我添加行,然后当行迭代结束时,我将它添加到 main,然后重复另一行等。例如:

for(int i=0; i < somearray.length; i++){
  for(int j=0; j < somearray2.length; j++){
    if(somearray2[j] == true)
      row.add(somearray2[j]);
    }
  main.add(row);

}

所以现在我得到了充满我需要的行的 ArrayList。但后来我需要遍历行值,而不仅仅是行本身来自main ArrayList. 我怎样才能做到这一点?因为我只看到方法:

main.get(index),让我得到一行,但仅此而已。

4

2 回答 2

7

因此,根据您的描述,main不是对象列表,而是列表列表。所以应该声明为

List<List<Object>> main = new ArrayList<>();

迭代现在变得很明显:

for (List<Object> row : main) {
    for (Object element : row) {
        // do what you want here
    }
}

这具有使您的代码类型安全的额外优势:您将无法在不经意间添加除List<Object>主列表之外的任何内容。

于 2013-11-10T13:44:52.910 回答
0

是的,然后以以下方式访问它们:((ArrayList<Object>)main.get(index)).get(index2);。但是,如果您希望将所有行元素添加到main数组中,您可以使用:

Collections.addAll(main, row.toArray());
于 2013-11-10T13:45:17.087 回答