這段代碼有什麼問題。我收到以下錯誤消息。線程「main」中的異常java.lang.ClassCastException:帶有優先級隊列和比較器
Exception in thread "main" java.lang.ClassCastException: Nodes cannot be cast to java.lang.Comparable
at java.util.PriorityQueue.siftUpComparable(Unknown Source)
at java.util.PriorityQueue.siftUp(Unknown Source)
at java.util.PriorityQueue.offer(Unknown Source)
at java.util.PriorityQueue.add(Unknown Source)
請幫助
import java.util.Comparator;
import java.util.InputMismatchException;
import java.util.List;
import java.util.PriorityQueue;
import java.util.Queue;
class Nodes implements Comparator<Nodes> {
public int n;
public int c;
public Nodes() {
}
public Nodes(int n, int c) {
this.n = n;
this.c = c;
}
@Override
public int compare(Nodes Nodes1, Nodes Nodes2) {
if (Nodes1.c < Nodes2.c) {
return -1;
}
if (Nodes1.c > Nodes2.c) {
return 1;
}
return 0;
}
}
class dj
{
public static void main(String[] args) {
Queue<Nodes> pq = new PriorityQueue<Nodes>();
pq.add(new Nodes(5,4));
pq.add(new Nodes(6,7));
pq.add(new Nodes(7,6));
pq.add(new Nodes(8,9));
pq.add(new Nodes(9,8));
pq.add(new Nodes(8,8));
}
}
你可能換貨實現可比,而不是比較 –
而提示:* *真正的東西在這裏學習:學習閱讀異常消息 - 他們會告訴你確切** **是怎麼回事!這是學習編程時最重要的事情之一:您必須注意「比較器」與「可比較」不一樣的細節。 – GhostCat