Я пытаюсь написать программу, в которой я копирую офис регистратора, используя приоритетную очередь. Сортировка для этой очереди приоритетов будет основываться на более высоком GPA, который будет обслуживаться первым и т. д. Я создал программу, которая делает это с моей собственной реализацией, но я просто не понимаю, как реализовать мой метод compareTo.
//Create Priority Queue
PriorityQueue<Student> pQueue = new PriorityQueue<Student>(10, compareTo());
Сначала я сделал свою приоритетную очередь. Согласно документации, я могу указать, что я должен использовать для своих сравнений, compareTo().
Но когда я попытался реализовать свой метод compareTo, он не позволяет мне указать какие-либо параметры.
private Comparator<? super Student> compareTo(Student x, Student y) {
}
Он говорит мне, что «compareTo в BursarOfficeJavaService не может быть применен к ()», и моя IDE предлагает удалить мои параметры. Но я не понимаю, как я могу делать сравнения без объектов для сравнения?
Мой единственный другой метод в классе — это reciveEvent, который в основном просто определяет, удаляю ли я из очереди или добавляю в очередь. Данные по событию — это студенческий объект, с которым я могу сравнить, но я просто не понимаю, как собрать все это вместе.
public void receiveEvent(Event<Student> event) {
if (event.getType() == EventType.REQUEST_COMPLETED){
pQueue.poll();
}
else{
}
}
С некоторой помощью я придумал этот метод сравнения. Однако проблема все еще сохраняется, когда новый учащийся сравнивается с первым учащимся в списке, а его средний балл не выше, он добавляет этого учащегося в конец списка без проверки с другими учащимися в pQueue.
PriorityQueue<Student> pQueue = new PriorityQueue<Student>(10, new Comparator<Student>(){
@Override
public int compare(Student o1, Student o2){
if (o1.equals(o2))
return 0;
else if(o1.getGpa() > o2.getGpa())
return -1;
else
return 1;
}
});
private boolean equals (Student o1, Student o2){
if (o1.getGpa() == o2.getGpa())
return true;
else
return false;
}
Comparator
. Реализуйте класс с помощьюComparator<Student>
и передайте его экземпляр в конструкторPriorityQueue
. - person 11thdimension   schedule 06.09.2016