14_Comparator

Code-Dateien

DateinameAktion
CODECode_Fahrzeug.zipDownload
CODECode_Mitarbeiter.zipDownload

PDF-Dokumente

DateinameAktion
PDFFolie_Mitarbeiter.pdfÖffnen
PDFUebung_Speise.pdfÖffnen
PDFUebung_Wohnung.pdfÖffnen

Videos

DateinameAktion
VIDEOVideo_Fahrzeug_DAbspielen
VIDEOVideo_Mitarbeiter_DAbspielen

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 Comparable implementiert).

  • 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:

  • < 0a kommt vor b

  • = 0a ist gleichwertig zu b (für die Sortierung)

  • > 0a kommt nach b

Unterschied zu Comparable

  • Comparable<T>: Die Klasse selbst definiert ihre natürliche Ordnung via compareTo.

  • 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());
        }
    }