14_Comparator
Code-Dateien
| Dateiname | Aktion |
|---|---|
| CODECode_Fahrzeug.zip | Download |
| CODECode_Mitarbeiter.zip | Download |
PDF-Dokumente
| Dateiname | Aktion |
|---|---|
| PDFFolie_Mitarbeiter.pdf | Öffnen |
| PDFUebung_Speise.pdf | Öffnen |
| PDFUebung_Wohnung.pdf | Öffnen |
Videos
| Dateiname | Aktion |
|---|---|
| VIDEOVideo_Fahrzeug_D | Abspielen |
| VIDEOVideo_Mitarbeiter_D | Abspielen |
Lernmaterialien
Comparator
In Java ist ein Comparator ein Objekt, das festlegt, wie zwei Objekte miteinander verglichen (sortiert) werden sollen – also eine Sortierreihenfolge, die nicht unbedingt der “natürlichen Ordnung” der Klasse entspricht.
Wozu braucht man das?
Wenn eine Klasse keine natürliche Ordnung hat (kein
Comparableimplementiert).Wenn du alternative Sortierungen willst (z. B. Personen nach Name, nach Alter, nach PLZ …).
Kernidee
Ein Comparator<T> hat (mindestens) diese
Methode:
int compare(T a, T b)Rückgabewert:
< 0→akommt vorb= 0→aist gleichwertig zub(für die Sortierung)> 0→akommt nachb
Unterschied zu
Comparable
Comparable<T>: Die Klasse selbst definiert ihre natürliche Ordnung viacompareTo.Comparator<T>: Externe, austauschbare Vergleichslogik (beliebig viele möglich).
Implementierung
School.java
public void sortAlter() {
Collections.sort(students, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s1.getAlter() - s2.getAlter();
}
});
}SchoolTest.java
@Test
public void testSortAlter() {
School s;
s = new School();
try {
s.importSchool("daten.txt");
System.out.println(s);
s.sortAlter();
System.out.println("================");
System.out.println(s);
}
catch (StudentException e) {
System.out.println(e.getMessage());
}
}