我有一个问题,我在互联网上研究了一段时间,但似乎无法找到任何可以帮助我得出结论的东西。
我有一个班级网格。 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数组代表坐标系。
答案 0 :(得分:0)
Cell [] []没有实现Iterator。您应该在Grid中创建一个实现Iterator的GridIterator内部类,其next()和hasNext()将返回您认为是“下一个”Cell的任何内容,直到遍历网格为止。
答案 1 :(得分:0)
for(Cell[] row : grid) {
for(Cell cell : row) {
// do stuff
}
}
您不能直接迭代二维数组的各个元素,但可以遍历行,然后遍历行的元素。