當我在做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'進行轉換。請在問題中添加完整的堆棧跟蹤(不作爲註釋!) –