2012-01-15 68 views
0

我有一個問題,我一直在互聯網上研究一段時間,但似乎無法找到任何可以幫助我得出結論的問題。迭代包裝在對象中的二維數組

我有一個班網格。網格存儲類型爲的單元陣列

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

而且我有類主要。我希望能夠在2D陣列上電網迭代電網對象的內部,在這樣的方式形成主要

public class Main { 
Grid grid; 

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

我不能簡單地添加:

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

我的Grid因爲它返回一個錯誤。

我不想單元格對象保存的座標,我想二維數組來表示座標系統。

+0

它返回什麼錯誤? – Zavior 2012-01-15 23:33:15

回答

0

單元格[] []沒有實現迭代器。您應該在Grid中創建一個實現Iterator的GridIterator內部類,並且其next()和hasNext()將返回您認爲是「下一個」Cell的任何內容,直到網格被遍歷爲止。

+0

我正在寫自定義迭代器:) – LucasSeveryn 2012-01-15 23:52:40

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

您無法直接將二維數組中的單個元素迭代,但你可以遍歷行,然後遍歷行的元素。

+0

我盡我最大努力來傳達我在問什麼,我想在** Main **類中進行迭代,而不是在** Grid **類中。 – LucasSeveryn 2012-01-15 23:52:16