2011-02-26 71 views
0

我有一個網絡類,在它NET = ArrayList<Node>。 我使用的是網絡類控制,不能添加什麼,保持ArrayList排序等,我有過ArrayList使用二進制搜索(他們根據該排序的GET方法,它需要一個節點號作爲參數)如何在我自己的集合上使用For-Each循環?

但在大多數情況下,當其他對象需要他們只需要經過的節點,而不管它們的數量,常常不是完全知道數量的節點上調用。

Network我有

public Iterator<Node> iterator() { 
     return NET.iterator(); 
} 

之類的東西

Iterator<Node> i = net.iterator(); 
Node n; 
while (i.hasNext()) { 
    n = i.next(); 
    // do stuff 
} 

for (Node n : net) { 

} 

我得到 「的foreach並不適用於表達型」。如果可能的話,還需要添加到網絡以使用for-each循環嗎?

我對這個問題的研究使我只能主題解釋爲什麼我需要一個每個了,我認爲這是在這種情況下,相關的。

回答

8

您需要實現Iterable<T>接口,以便foreach將使用您的迭代器。

+0

我看到,工作,雖然起初我陷入了陷阱:http://stackoverflow.com/questions/601658/java-how-to-implement-iterable – Recct 2011-02-26 18:05:50

+0

好點 - 我會編輯答案添加一個筆記。 – 2011-02-26 19:30:35