Что не так с этим кодом. Я получаю ниже сообщение об ошибке.Исключение из потока «main» java.lang.ClassCastException: с приоритетной очередью и компаратором
Exception in thread "main" java.lang.ClassCastException: Nodes 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)
пожалуйста, помогите
import java.util.Comparator;
import java.util.InputMismatchException;
import java.util.List;
import java.util.PriorityQueue;
import java.util.Queue;
class Nodes implements Comparator<Nodes> {
public int n;
public int c;
public Nodes() {
}
public Nodes(int n, int c) {
this.n = n;
this.c = c;
}
@Override
public int compare(Nodes Nodes1, Nodes Nodes2) {
if (Nodes1.c < Nodes2.c) {
return -1;
}
if (Nodes1.c > Nodes2.c) {
return 1;
}
return 0;
}
}
class dj
{
public static void main(String[] args) {
Queue<Nodes> pq = new PriorityQueue<Nodes>();
pq.add(new Nodes(5,4));
pq.add(new Nodes(6,7));
pq.add(new Nodes(7,6));
pq.add(new Nodes(8,9));
pq.add(new Nodes(9,8));
pq.add(new Nodes(8,8));
}
}
Вы, вероятно, Мента реализовать Сопоставимые, не Компаратор –
И подсказка: * реальные * вещь здесь, чтобы узнать: научиться читать сообщения исключений - они говорят вам ** ** именно то, что происходит! Это одна из больших вещей при изучении программирования: вы должны обратить внимание на такие тонкие детали, как «Компаратор», не являющийся тем же, что и «Сопоставимый». – GhostCat