簡體   English   中英

當一個對象具有多個內部集合時,如何從外部對其進行迭代?

[英]When an object has multiple internal collections, how can i iterate over them from the outside?

不久前,我為導航圖編寫了一個編輯器,該編輯器表示建築物內部(之間)的路徑。 它存儲在Graph類中。

例如,邊緣存儲在每層樓的一個集合中,另外一層存儲在樓層之間。

繪制它們(僅在當前樓層)或將它們保存到磁盤(所有它們),我需要從外部獲取它們。 為此,我實現了諸如callWithAllEdges和callWithAllEdgesIn之類的方法,后者采用一個參數來指定底限。

這些方法使用了一個仿函數(至少我稱它為“ functor”),然后將其與邊緣一起調用。

這是繪制一層地板的邊緣的樣子:

graph.callWithAllEdgesIn(id, new Functor<Edge>() {
    public void call(Edge e) {
        drawEdge(g,e);
    }
});

當然,這有點麻煩。 我可能不知道與Java而不是我的解決方案有關的問題。

我猜想,另一種方法是制作一種方法,將對所有所需邊緣的引用放入新集合中,然后對其進行迭代。 不過對我來說似乎有點不對。

我的問題是:我該如何更好地解決呢?

您當前的設計是完全合理的。 另一種選擇是提供一個Iterable / Iterator。 這樣,您無需將所有內容復制到新列表中,而是可以懶惰地逐步瀏覽內部列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM