绘制它们(只有当前楼层)或将它们保存到磁盘(所有这些),我需要从外面获取它们。为此我实现了callWithAllEdges和callWithAllEdgesIn等方法,后者使用参数来指定一个楼层。
这些方法采用了一个仿函数(至少我称之为),然后用边缘调用。
这就是绘制一层楼边缘的样子:
graph.callWithAllEdgesIn(id, new Functor<Edge>() {
public void call(Edge e) {
drawEdge(g,e);
}
});
当然,这有点啰嗦。可能是java的问题而不是我的解决方案,我不知道。
另一种方法是创建一个方法,将所有需要的边的引用放入一个新的集合,然后迭代,我想。虽然对我来说似乎有点不对。
我的问题是:我怎么能更好地解决这个问题?
答案 0 :(得分:1)
您目前的设计非常合理。另一种选择是提供Iterable / Iterator。这样您就不需要将所有内容复制到新列表中,而是可以懒洋洋地单步执行内部列表。