Я создаю очередь с пользовательским приоритетом, в которой я по существу помещаю объекты в PQ и сортирую по определенному ключу в этом объекте:
Класс входа в приоритетную очередь
package Graphs;
public class PQEntry implements Comparable<PQEntry> {
public int node;
public int nodeVal;
public PQEntry(int node, int nodeVal) {
this.node = node;
this.nodeVal = nodeVal;
}
@Override
public String toString() {
return "Node: " + this.node + ", Value: " + this.nodeVal;
}
public int getNodeVal() {
return this.nodeVal;
}
@Override
public int compareTo(PQEntry other) {
return Integer.compare(this.getNodeVal(), other.nodeVal);
}
}
Теперь все в порядке, приоритет работает как надо:
PriorityQueue<PQEntry> pq = new PriorityQueue();
Но я новичок в Java, и я не понимаю, как/где/когда compareTo в моем классе PQEntry применяется к классу PriorityQueue и как это работает.
Когда я вызываю функцию add
внутри PriorityQueue
, инициирует ли она какой-то алгоритм подкачки, вызывающий суперметод из моего класса PQEntry? Я действительно немного новичок в Java и пытаюсь понять здесь процесс.