【问题标题】:Iterate over a 2D array wrapped in an object遍历包裹在对象中的二维数组
【发布时间】:2012-01-15 23:16:55
【问题描述】:

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

我有一个班级Grid。 Grid 存储一个 Cell 类型的二维数组。

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

我有 Main 类。我希望能够遍历 Grid 对象内的 2D 数组 grid,以这种方式形成 Main

public class Main {
Grid grid;

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

我不能简单地添加:

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

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

我不希望 Cell 对象保存坐标,我希望二维数组表示坐标系。

【问题讨论】:

    标签: java arrays iterator multidimensional-array


    【解决方案1】:

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

    【讨论】:

    • 我要写自定义迭代器然后:)
    【解决方案2】:
    for(Cell[] row : grid) {
      for(Cell cell : row) { 
        // do stuff
      }
    }
    

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

    【讨论】:

    • 我尽力传达我的要求,我想在 Main 类中迭代,而不是在 Grid 类中。跨度>
    猜你喜欢
    • 2016-09-04
    • 2019-11-14
    • 1970-01-01
    • 2017-10-18
    相关资源
    最近更新 更多