2012-01-07 39 views

回答

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); 
}