用JGraphT改变顶点的内容

时间:2012-01-07 02:07:21

标签: java jgrapht

是否有一种方法可以在保持顶点内容的同时更改顶点的内容。我找不到一个,但似乎会提供一些东西。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

改变顶点的内容是什么意思?顶点是使用泛型构造的,这意味着您可以在其中放置任何对象,这意味着您可以提供一种方法来替换此对象的内容(如果它不是不可变的)。或者你想在那里完全放置一个新对象(全新的顶点)并保存旧对象的所有关系?那么您可能必须找到具有此顶点(java.util.Set<E> edgesOf(V vertex))的边,删除它们(boolean removeEdge(E e)),并替换为包含新顶点(E addEdge(V sourceVertex, V targetVertex))的新顶点。