Hallo, ich habe eine etwas speziellere frage zu "implements Comparator". Es funktioniert in meinem Programm zwar alles wie es soll, aber ich würde gerne die Funktion dahinter verstehen wie es funktioniert. Ich habe eine eigene Klasse namens Person erstellt, diese hat 2 Eigenschaften (String name und int Alter) nun habe ich noch 2 weitere Klassen für den Comparator erstellt, der eine Sortiert nach den Namen und der andere Sortiert nach dem Alter:
Wenn ich jetzt eine ArrayList (gefüllt mit Personen Objekten) Sortieren möchte, mache ich das ja wie Folgt:
Um zu herauszufinden, wie die Funktionsweise ist, habe ich einfach mal in meiner Comparator Klasse das implements weggelassen, dann entsteht sofort ein Fehler aber warum? Eigentlich benötigen wir doch das Interface nur auf die eine Unimplementierte Methode zuzugreifen, danach benötigen wir doch das Interface eigentlich nicht mehr oder verstehe ich da etwas Falsch? Die Funktion sort( ) greift doch auf die von mir erstellte Klasse zu. Warum benötigt es dann noch das Interface, vom dem wir die Funktion aufrufen (Beim erstellen). Ich hoffe, meine Frage ist nicht zu verwirrend, will die Funktionsweise dahinter nur richtig verstehen.
Java:
class SortiereAngestelltenNamen implements Comparator<Angestellter> {
@Override
public int compare(Angestellter o1, Angestellter o2) {
return o1.getName().compareTo(o2.getName());
}
}
class SortiereAngestelltenAlter implements Comparator<Angestellter> {
public int compare(Angestellter o1, Angestellter o2) {
if (o1.getAlter() > o2.getAlter()) {
return 1;
} else if (o1.getAlter() < o2.getAlter()) {
return -1;
} else {
return 0;
}
}
}
Wenn ich jetzt eine ArrayList (gefüllt mit Personen Objekten) Sortieren möchte, mache ich das ja wie Folgt:
Code:
Collections.sort(angestelltenListe, new SortiereAngestelltenAlter());
Um zu herauszufinden, wie die Funktionsweise ist, habe ich einfach mal in meiner Comparator Klasse das implements weggelassen, dann entsteht sofort ein Fehler aber warum? Eigentlich benötigen wir doch das Interface nur auf die eine Unimplementierte Methode zuzugreifen, danach benötigen wir doch das Interface eigentlich nicht mehr oder verstehe ich da etwas Falsch? Die Funktion sort( ) greift doch auf die von mir erstellte Klasse zu. Warum benötigt es dann noch das Interface, vom dem wir die Funktion aufrufen (Beim erstellen). Ich hoffe, meine Frage ist nicht zu verwirrend, will die Funktionsweise dahinter nur richtig verstehen.