通过Java中的ArrayLists的ArrayList进行迭代

时间:2013-12-09 12:28:22

标签: java arraylist iterator

我有以下ArrayList ...

ArrayList<ArrayList<Integer>> row1 = new ArrayList<ArrayList<Integer>>();

添加了以下arraylists ....

row1.add(cell1);
row1.add(cell2);
row1.add(cell3);
row1.add(cell4);
row1.add(totalStockCell);

我想遍历arraylist row1并打印内容。

循环中的循环会在这里工作吗?

E.g。

while(it.hasNext()) {

//loop on entire list of arraylists
    while(it2.hasNext) {
      //each cell print values in list

          } }

5 个答案:

答案 0 :(得分:4)

这是你这样做的规范方式:

for(List<Integer> innerList : row1) {
    for(Integer number : innerList) {
        System.out.println(number);
    }
}

答案 1 :(得分:2)

for (ArrayList<Integer> list : row1)
{
    for (Integer num : list)
    {
        //doSomething
    }
}

Java enhanced-for循环在后台使用迭代器。

答案 2 :(得分:0)

如果你想使用Iterator,嵌套循环将起作用:

    Iterator<ArrayList<Integer>> it = row1.iterator();

    while(it1.hasNext())
        {
        Iterator<Integer> itr = it.next().iterator();
        while(itr.hasNext())
            {
            System.out.println(itr.next());
            }
        }

答案 3 :(得分:0)

一个古老的问题,但我很好奇为什么没人这么说

for(int i=0; i<list.size(); i++) {       
        // Didn't want to create extra space here    
        for(int j=0; j<list.get(i).size(); j++) {
            System.out.print(list.get(i).get(j) + " ");    
        }
}

这与访问2D矩阵相同。

答案 4 :(得分:0)

这里有一些实用的方法:

    ArrayList<ArrayList<Integer>> row1 = new ArrayList<>();
    row1.add(new ArrayList<>(Arrays.asList(1, 2, 3)));
    row1.add(new ArrayList<>(Arrays.asList(4, 5, 6)));
    row1.stream().flatMap(Collection::stream).forEach(System.out::println);