迭代包裹在对象中的2D数组

时间:2012-01-15 23:16:55

标签: java arrays iterator multidimensional-array

我有一个问题,我在互联网上研究了一段时间,但似乎无法找到任何可以帮助我得出结论的东西。

我有一个班级网格。 Grid存储类型为 Cell 的2D数组。

public class Grid implements Iterable<Cell>{
    private Cell[][] grid;

我上课主要。我希望能够在 Grid 对象内迭代2D数组 grid ,以这种方式形成 Main

public class Main {
Grid grid;

    for(Cell c: grid){
        //do something
    }
}

我不能简单地添加:

public Iterator<Cell> iterator() {
    retrun grid.iterator();
}

在我的 Grid 类中,因为它返回错误。

我不希望 Cell 对象保持坐标,我希望2D数组代表坐标系。

2 个答案:

答案 0 :(得分:0)

Cell [] []没有实现Iterator。您应该在Grid中创建一个实现Iterator的GridIterator内部类,其next()和hasNext()将返回您认为是“下一个”Cell的任何内容,直到遍历网格为止。

答案 1 :(得分:0)

for(Cell[] row : grid) {
  for(Cell cell : row) { 
    // do stuff
  }
}

您不能直接迭代二维数组的各个元素,但可以遍历行,然后遍历行的元素。