カスタム クラスでプライオリティ キュー (java.util.PriorityQueue) を使用しようとしています。PriorityQueue クラスが Comparable インターフェースを使用することを理解しているので、カスタム クラスに実装しました。
public class State implements Comparable<State> {
public int val;
public State(){
this.val = 0;
}
public int compareTo(State other){
return this.val - other.val;
}
}
そして、キューを使用するために、次のことを行いました。
PriorityQueue<State> q = new PriorityQueue<State>();
q.add(myState1);
q.add(myState2);
// etc.
正しくコンパイルされますが、実行時に次の例外が発生します。
Exception in thread "main" java.lang.ClassCastException: State 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)
at MapTable.search(MapTable.java:308)
at Map.main(Map.java:67)
私は何を間違っていますか?私が覚えている限り、これは私が同等に実装する方法です。すべての回答に感謝します。