当我在做BFS时向顶点添加一个顶点时,得到ClassCastException。需要帮助 信息:Vertex是一个用户定义的类,它具有Edge类对象的链表。我该如何解决这个ClassCastException?
这里是我的代码:
private void reachable() {
clearAll();
for (Vertex v : vertexMap.values())
v.setColor("white");
for (Vertex s : vertexMap.values())
if (s.isStatus())
bfs(s);
}
private void bfs(Vertex s) {
s.setColor("gray");
s.dist = 0;
s.prev = null;
Queue<Vertex> vertices = new PriorityQueue<Vertex>();
vertices.add(s);
while (!vertices.isEmpty()) {
Vertex u = vertices.remove();
for (Iterator i = u.adjacent.iterator(); i.hasNext();) {
Edge edge = (Edge) i.next();
Vertex adj = edge.getDestVertex();
if (!adj.getName().equals(u.getName()) && adj.isStatus())
if (adj.getColor().equals("white")) {
adj.setColor("gray");
adj.dist = u.dist + 1;
adj.prev = u;
vertices.add(adj);
}
}
u.setColor("black");
}
}
用完整的堆栈跟踪发布异常不是一个坏主意。 – Gimby
线程“main”中的异常java.lang.ClassCastException:project2.Vertex不能转换为java.lang.Comparable – aninditha
在上面的代码中没有对'java.lang.Comparable'进行转换。请在问题中添加完整的堆栈跟踪(不作为注释!) –