2012-01-07 6 views
0

頂点のすべての端を維持しながらその内容を変更する方法はありますか?私は1つを見つけることができませんでしたが、それは提供されるもののように思えます。頂点の内容をJGraphTで変更する

答えて

0

頂点の内容を変更するとどういう意味ですか?頂点はジェネリックで作成されます。つまり、そこに任意のオブジェクトを置くことができます。つまり、このオブジェクトの内容を置き換えるメソッドを提供することは、変更できない場合に限ります。または、そこに新しいオブジェクト(完全に新しい頂点)を入れて、古いオブジェクトのすべての関係を保存したいですか?次に、この頂点(java.util.Set<E> edgesOf(V vertex))でエッジを見つけて削除し(boolean removeEdge(E e))、新しい頂点(E addEdge(V sourceVertex, V targetVertex))を含む新しいものに置き換える必要があります。

0

JGraphTには頂点を置き換える方法がありません。これを使用して、あなたが望むことをすることができます:

public static <V, E> void replaceVertex(Graph<V, E> graph, V vertex, V replace) { 
    graph.addVertex(replace); 
    for (E edge : graph.outgoingEdgesOf(vertex)) graph.addEdge(replace, graph.getEdgeTarget(edge), edge); 
    for (E edge : graph.incomingEdgesOf(vertex)) graph.addEdge(graph.getEdgeSource(edge), replace, edge); 
    graph.removeVertex(vertex); 
} 
関連する問題