Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo, ich möchte Personen alphabetisch nach ihrem Nachnamen sortieren.
Ich soll eine Klasse PersonComparator erstellen, die eine Schnittstelle Comparator implementiert und mit der compare-Methode
die Sortierung macht. Wie muss ich das machen mit PersonComparator und Comparator?
Mein Interface Comparator
Java:
public interface Comparator<Person> {
String compare();
}
Meine Klasse PersonComparator
Java:
public class PersonComparator implements Comparator<Person>{
String <Person> compare(){
}
}
Meine Klasse Personen
Java:
public class Person {
private String firstName;
private String lastName;
public Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return this.firstName;
}
public String getLastName() {
return this.lastName;
}
}
Zu deinem Code fällt mir ansonsten kaum etwas ein:
Deine Idee einer compare Methode verstehe ich nicht - keine Parameter und String als Ergebnis? Und die Konstrukte sind teilweise ungültig. String ist z.B. kein generischer Typ so dass String<Person> keinen Sinn ergibt.
Aber der Hinweis hilft dir hoffentlich, denn so bekommst du das richtige Interface, das du nur implementieren musst.
Ich habe meine Klasse PersonComparator jetzt angepasst. Wie würde ich das hinbekommen, mehrere Personen zu sortieren?
Java:
import java.util.*;
public class PersonComparator implements Comparator<Person>{
public int compare(Person o1, Person o2){
return o1.getLastName().compareTo(o2.getLastName());
}
public static void main(String[] args) {
Person mm = new Person("M", "M");
Person zz = new Person("Z","Z");
Person ee = new Person("E","E");
System.out.println(zz.compare(mm,zz));
}
}
Ich habe meinen Code nochmal etwas bearbeitet. Macht das so Sinn?
Direkt in der dritten Zeile bekomme ich noch eine Fehlermeldung:
The type PersonComparator must implement the inherited abstract method Comparator<Person>.compare(Person, Person)
Java:
import java.util.*;
public class PersonComparator implements Comparator<Person> {
public static Comparator<Person> COMPARE_BY_NAME = new Comparator<Person>() {
public int compare(Person o1, Person o2){
return o1.getLastName().compareTo(o2.getLastName());
}
};
public static void main(String[] args) {
List<Person> liste = new ArrayList<Person>();
liste.add(new Person("D", "D"));
liste.add(new Person("B", "B"));
liste.add(new Person("A", "A"));
Collections.sort(liste,Person.COMPARE_BY_NAME);
}
}