少し前に、建物の内部(および建物の間)のパスを表すナビゲーショングラフのエディターを作成しました。Graphクラス内に格納されていました。
たとえば、エッジはフロアごとに1つのコレクションに保存され、さらにフロア間にあるコレクションには1つのコレクションが保存されました。
それらを描画する(現在のフロアのみ)か、ディスクに保存する(すべて)には、外部からそれらを取得する必要がありました。そのために、callWithAllEdgesやcallWithAllEdgesInなどのメソッドを実装しました。後者は、フロアを指定するためのパラメーターを取ります。
それらのメソッドはファンクターを取り(少なくとも私はそれをそれと呼んだ)、それは次にエッジで呼び出された。
これは、1つのフロアのエッジの描画がどのように見えるかです。
graph.callWithAllEdgesIn(id, new Functor<Edge>() {
public void call(Edge e) {
drawEdge(g,e);
}
});
もちろん、これは少し時間がかかります。私の解決策ではなく、Javaの問題かもしれませんが、私にはわかりません。
別の方法は、必要なすべてのエッジへの参照を新しいコレクションに入れて、それを反復処理するメソッドを作成することだったと思います。しかし、私にはちょっと間違っているように見えました。
私の質問は:どうすればそれをもっとうまく解決できたでしょうか?