2012-05-13 56 views
1

我有一個關於UndirectedGraph用法的問題。我的代碼:JGraphT - UndirectedGraph - addEdge方法不起作用

UndirectedGraph<String, DefaultEdge> graph = 
      new SimpleGraph<String, DefaultEdge>(DefaultEdge.class); 

String v1 = "v1"; 
String v2 = "v2"; 
String v3 = "v3"; 
String v4 = "v4"; 

graph.addVertex(v1); 
graph.addVertex(v2); 
graph.addVertex(v3); 
graph.addVertex(v4); 

graph.addEdge(v1, v2); 
graph.addEdge(v2, v3); 
graph.addEdge(v3, v4); 
graph.addEdge(v4, v1); 

每個頂點已成功添加到圖形中。 Hovewer,addEdge方法無法正常工作。當我調試這段代碼時,首先addEdge線扔類沒有發現異常。

我希望你能幫助我。謝謝。

回答

1

隨着jgrapht-0.8.3,如預期了以下工作:

import org.jgrapht.UndirectedGraph; 
import org.jgrapht.graph.DefaultEdge; 
import org.jgrapht.graph.SimpleGraph; 

public class GraphTest { 

    public static void main(String[] args) { 
    UndirectedGraph<String, DefaultEdge> graph = 
     new SimpleGraph<String, DefaultEdge>(DefaultEdge.class); 

    String v1 = "v1"; 
    String v2 = "v2"; 
    String v3 = "v3"; 
    String v4 = "v4"; 

    graph.addVertex(v1); 
    graph.addVertex(v2); 
    graph.addVertex(v3); 
    graph.addVertex(v4); 

    graph.addEdge(v1, v2); 
    graph.addEdge(v2, v3); 
    graph.addEdge(v3, v4); 
    graph.addEdge(v4, v1); 

    if(graph.getEdge(v1, v2) != null) { System.out.println("SUCCESS"); } 
    if (graph.getEdge(v2,v4) == null) { System.out.println("SUCCESS"); } 
    } 
} 

我得到

成功

成功

你能說清楚你有什麼問題嗎?

-1

UndirectedGraph看起來是一個接口。 SimpleGraph所嘗試,這是一個實現類...也許

+0

提問者代碼不會濫用接口。使用SimpleGraph(參見提問者代碼中'graph'的初始化) – andersoj