我正在尝试学习和实施Directed Graph,并在执行程序时遇到一些困难。
// ADD Function
public boolean addVertex(Vertex<T> v)
{
boolean added = false;
if (verticies.contains(v) == false)
{
added = verticies.add(v);
return true;
}
return added;
}
class Vertex<T>
{
private String name;
private T data;
/**
* Create a Vertex with name n and given data
*
* @param n - name of vertex
* @param data - data associated with vertex
*/
public Vertex(String n, T data)
{
incomingEdges = new java.util.ArrayList<Edge<T>>();
outgoingEdges = new java.util.ArrayList<Edge<T>>();
name = n;
this.data = data;
}
}
// Initialization of the Vertices & Edges
public GraphImpl()
{
verticies = new java.util.ArrayList<Vertex<T>>();
edges = new java.util.ArrayList<Edge<T>>();
}
错误: 当执行程序时,我在调用addVertex(String)函数时输入string作为输入,并且它给出了错误String无法转换为Vertex。 从Java回收的错误: java.lang.ClassCastException:java.lang.String无法转换为DG.Vertex
有人可以解释一下,我做错了什么。 谢谢。
答案 0 :(得分:1)
问题是你没有addVertex(String)函数。
您的函数是addVertex(Vertex),因此您需要创建一个新的Vertex对象并将其添加到Graph中。关键是顶点需要名称和数据。
示例代码:
DirectedGraph<String> directedGraph = new DirectedGraph<String>();
// Create a vertex object with both a name and data
Vertex<String> sampleVertex = new Vertex<String>("name", "data"):
directedGraph.addVertex(sampleVertex);
如果仍然无法解决您的问题,请发布一个示例,其中包含Edge类和尝试调用addVertex()的main方法。