繁体   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