Я пытаюсь использовать приоритетную очередь, но метод 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;
}
}
Я думаю, что конечный результат вывода должен быть 2, так как я удаляю добавленную '1'. CompareTo () должно использоваться приоритетной очередью remove (), но его, похоже, нет. Что я делаю не так? Я знаю, что pq.remove (a) будет работать, но тогда мой код также должен работать