不久前,我为表示建筑物内部(和之间)路径的导航图编写了一个编辑器。它存储在 Graph 类中。
例如,边缘存储在每个楼层的一个集合中,再加上一个用于楼层之间的集合。
要绘制它们(仅当前楼层)或将它们保存到磁盘(全部),我需要从外部获取它们。为此,我实现了 callWithAllEdges 和 callWithAllEdgesIn 等方法,后者采用参数来指定楼层。
这些方法采用了一个仿函数(至少我这样称呼它),然后用边缘调用它。
这就是绘制一层楼的边缘的样子:
graph.callWithAllEdgesIn(id, new Functor<Edge>() {
public void call(Edge e) {
drawEdge(g,e);
}
});
当然,这有点啰嗦。可能是java的问题,而不是我的解决方案,我不知道。
另一种方法是创建一个方法,将对所有需要的边缘的引用放入一个新集合中,然后对其进行迭代,我猜。不过对我来说似乎有点不对劲。
我的问题是:我怎么能更好地解决这个问题?