プライオリティ キューを使用しようとしていますが、remove() が機能しません: 私のコード:
PriorityQueue<OwnClass> pq=new PriorityQueue<OwnClass>();
OwnClass a=new OwnClass(1);
OwnClass b=new OwnClass(2);
OwnClass c=new OwnClass(3);
pq.add(a);
pq.add(b);
pq.add(c);
System.out.println("head:"+pq.peek());
pq.remove(new OwnClass(1));
System.out.println(pq.peek());
そしてクラスの実装:
class OwnClass implements Comparable{
int x;
public OwnClass(int x){
this.x=x;
}
public int compareTo(Object arg0) {
OwnClass a=(OwnClass) arg0;
if(a.x>this.x)
return -1;
if(a.x<x)
return 1;
return 0;
}
public String toString(){
return ""+x;
}
}
追加された「1」を削除しているため、出力の最終出力は2になるはずです。compareTo() は優先キュー remove() で使用する必要がありますが、そうではないようです。私が間違っていることは何ですか?pq.remove(a) が機能することはわかっていますが、私のコードも機能するはずです