2013-05-09 4 views
0

Я пытаюсь написать простое приложение с очередями приоритетов. Я получаю следующие ошибки - «Ошибка: leastPriority не является абстрактным и не переопределяет абстрактный метод сравнения (Integer, Integer) в компаратор» и „ошибка: несовместимые типы Компаратор CMP = новый leastPriority();“Ошибки с использованием интерфейса компаратора

Может кто-то указать на проблему с этим кодом.

Мой код:

class leastPriority implements Comparator<Integer> {  
    public int compare(Reservation x, Reservation y){ 
     if(x.getPriority() > y.getPriority()){ 
      return -1; 
     } 
     if(x.getPriority() < y.getPriority()){ 
      return +1; 
     } 
     return 0; 
    } 
} 

public class prioQueue{ 

    public static void main(String args[]){ 
     Comparator<Reservation> cmp = new leastPriority(); 
     PriorityQueue<Reservation> queue = new PriorityQueue<Reservation>(10,cmp); 
     queue.add(new Reservation(1,"Andy",10)); 
     queue.add(new Reservation(1,"Peter",1)); 
     queue.add(new Reservation(1,"John",4)); 

     while(true){ 
      Reservation r = queue.poll(); 
      if(r==null){ 
       break; 
      } 
      System.out.println(r.getName()); 
     } 

    } 
} 

ответ

7

Ваш параметр типа для Comparator<T> и параметров вашего compare(T o1, T o2) метод не соответствует. Поскольку в интерфейсе они одинаковы, вам нужно дать им одинаковые типы.

Изменить это:

class leastPriority implements Comparator<Integer> 

к:

class leastPriority implements Comparator<Reservation> 
+0

Спасибо .. Глупая ошибка: P – Fox

1

leastPriority должны осуществлять Comparator<Reservation> вместо Comparator<Integer>. Тип общего типа - это тот, который принят в качестве параметра в вашем методе compare().

P.S. Рекомендуется называть все классы Java первой буквой верхнего регистра (PrioQueue) и (LeastPriority).

Смежные вопросы