Я пытаюсь написать алгоритм, который использует очередь с минимальным приоритетом, поэтому я просмотрел google и нашел PriorityQueue. Похоже, что для его использования мне нужно будет сказать, как я хочу, чтобы он определил приоритеты, и что способ сделать это с помощью компаратора (я хочу сравнить конкретные поля данных моего «Node1», объекты). Больше googling представило идею создания нового компаратора, который реализует Comparator, но переопределяет метод сравнения. То, что я пытаюсь это это (и другие вариации него, а):Реализация Java 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 is not abstract and does not override abstract method compare(Object,Object) in Comparator
Я переключился сказать «сравнивать (объект х, у) объект», который ухаживает за этим вопросом. На данный момент, хотя компилятор жалуется, что он не может найти переменную dist в x или y, что имеет смысл, поскольку они являются частью моего класса Node1, а не класса Object.
Как это должно работать? По-видимому, он должен иметь тип Object
, но как же я могу направить его на правильную переменную?
Вы также можете написать 'обратный x.dist - y.dist' – Polygnome
@Polygnome: В зависимости от диапазонов, участвующих это может быть или не работает для целых чисел, но является полным не стартером для значений с плавающей запятой. – NPE
Спасибо! Решено! –