У меня проблемы с добавлением узла объекта в мой PriorityQueue, и я не могу понять, почему. Когда я добавляю Node a, у него нет проблем.
PriorityQueue<Node> q = new PriorityQueue<Node>();
Node a = new Node('a', 1);
q.add(a);
, но если я добавляю второй Node, он генерирует исключение: «java .lang.ClassCastException: Node не может быть преобразован в java .lang.Comparable "
PriorityQueue<Node> q = new PriorityQueue<Node>();
Node a = new Node('a', 1);
Node b = new Node('b', 2);
q.add(a);
q.add(b);
Мой класс Node ниже:
public class Node {
public int count;
public char character;
public Node left;
public Node right;
public Node(char character, int count) {
this(character, count, null, null);
}
public Node(char character, int count, Node left, Node right) {
this.count = count;
this.character = character;
this.left = left;
this.right = right;
}
public int compareTo(Node other) {
return this.count - other.count;
}
}
Думаю, я просто не понимаю, почему он может добавить узел a, но не добавить узел b. Я посмотрел, что такое ClassCastException, и на самом деле не вижу, чтобы я делал такое исключение, поскольку я добавляю тип Node в PriorityQueue типа Nodes. Буду признателен за любую помощь. Спасибо!