Я пытаюсь написать алгоритм, который использует очередь с минимальным приоритетом, поэтому я просмотрел google и нашел PriorityQueue. Похоже, что для его использования мне нужно будет сказать, как я хочу, чтобы он определил приоритеты, и что способ сделать это с помощью компаратора (я хочу сравнить конкретные поля данных моего "Node1", объекты). Больше googling представило идею создания нового компаратора, который реализует Comparator, но переопределяет метод сравнения. Я пытаюсь это (и другие варианты его):
import java.util.Comparator;
public class distComparator implements Comparator {
@Override
public int compare(Node1 x, Node1 y){
if(x.dist<y.dist){
return -1;
}
if(x.dist>y.dist){
return 1;
}
return 0;
}
}
Компилятор протестует по нескольким причинам, одним из которых является то, что я не переубедил класс компаратора (который, как он говорит, является абстрактным)
error: distComparator не является абстрактным и не переопределяет сравнение абстрактного метода (Object, Object) в Comparator
Я переключил его, чтобы сказать "compare (object x, object y)", который позаботится об этой проблеме. На данный момент, хотя компилятор жалуется, что он не может найти переменную dist в x или y, что имеет смысл, поскольку они являются частью моего класса Node1, а не класса Object.
Итак, как это должно работать? Он должен иметь тип Object
, по-видимому, но как я могу направить его на правильную переменную?