Мне нужно использовать PriorityQueue для сортировки объектов Person.Сортировка очереди очередей приоритетов
Класс Person:
public class Person implements Comparable<Person>{
private String firstName;
private String lastName;
public Person(String firstName, String lastName){
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {return firstName;}
public String getLastName() {return lastName;}
public String toString(){
return "Name: " + firstName + " " + lastName + "\n";
}
public int compareTo(Person p){
String pname1 = firstName + lastName;
String pname2 = p.firstName + p.lastName;
return pname1.compareTo(pname2);
}
Основной код:
import java.util.PriorityQueue;
public class priorityQ{
public static void main(String[] args){
PriorityQueue<Person> pers = new PriorityQueue<Person>();
pers.add(new Person("Sam", "Smith"));
pers.add(new Person("Charlie", "Black"));
pers.add(new Person("Betty", "Brown"));
pers.add(new Person("Jessica", "Stewart"));
pers.add(new Person("John", "Friday"));
pers.add(new Person("Frank", "Folcy"));
System.out.print(pers);
}
}
мне нужно:
- Печать без сортировки (уже сделано в основной)
- Сортировать по фамилия
- Сортировка по имени, фамилии
Я не должен изменять код в классе Person.
Я создал новый класс:
import java.util.Comparator;
public class LastNameComparator implements Comparator<Person>{
public int compareTo(Person a, Person b){
Person p1 = (Person)a;
Person p2 = (Person)b;
if(p1.getLastName().equals(p2.getLastName()))
{
return p1.getFirstName().compareTo(p2.getFirstName());
}
return p1.getLastName().compareTo(p2.getLastName());
}
}
имеет ошибку компиляции:
LastNameComparator.java:2: error: LastNameComparator is not abstract and does not override abstract method compare(Person,Person) in Comparator
Вам также нужно использовать 'PriorityQueue'? –
выполните то, что сообщает сообщение об ошибке: 'не переопределяет сравнение (Person, Person)' - вы назвали его compareTo – EGOrecords
@Override Annotation сообщит вам об ошибке, потому что compareTo не отменяет ничего. – EGOrecords