JavaクラスのPriorityQueueに複数の要素を追加しようとすると、次の例外がスローされます。
java.lang.ClassCastException
次のメッセージを追加して、「イベントをjava.lang.Comparableにキャストできません。
2つのイベントオブジェクトを優先キューに追加しようとすると、この式が表示されます。優先キューなどを初期化する方法は次のとおりです。これを使用するのは初めてなので、構築にエラーがある可能性があります。
//the instance field
private PriorityQueue<Event> queue;
//Then in the constructor
queue = new PriorityQueue<Event>();
mainメソッドでテストしているだけですが、これは上記のエラーが発生したときです。
public static void main(String[] args) {
SimEngine engine = new SimEngine();
Event event1 = new Event();
Event event2 = new Event();
engine.getQueue().offer(event1);
engine.getQueue().offer(event2);
System.out.println("Queue size" + engine.queue.size());
}
注:キューに追加しようとしたときに、addとofferの両方を呼び出そうとしました。同じエラーが発生します。
上記のコードはすべて私のSimEngineクラスにあります。キューはこれらの要素の順序を知る必要があることは知っていますが、優先度を指定しないと、自然に並べ替えられると思いました。誰かが私がここで間違っていることを教えてくれませんか?