Comparable und Comparator im Vergleich
Lernen Sie den Unterschied zwischen Comparable und Comparator für benutzerdefinierte Sortierungen kennen. Üben Sie compareTo und externe Comparators.
Comparable und Comparator im Vergleich ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Java Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Java Academy-Kurs umfasst insgesamt 3 Lektionen.
Einführung
Sortieren erfordert Regeln. Comparable und Comparator sind zwei Möglichkeiten, diese festzulegen:
- Comparable: Die Klasse implementiert compareTo.
- Comparator: Ein separates Objekt, das an sort() übergeben wird.
Das Comparable-Konzept
Comparable ermöglicht einer Klasse, ihre natürliche Ordnung zu definieren. Implementieren Sie compareTo, damit Collections.sort weiß, wie Elemente geordnet werden.
Code: Comparable
Hier implementiert Person Comparable und wird nach dem Alter sortiert. Dadurch wird die natürliche Ordnung definiert.
public class Main {
static class Person implements Comparable<Person> {
String name;
int age;
Person(String n, int a) { name = n; age = a; }
public int compareTo(Person o) {
return this.age - o.age; // order by age
}
public String toString() { return name + "(" + age + ")"; }
}
public static void main(String[] args) {
java.util.List<Person> list = new java.util.ArrayList<>();
list.add(new Person("Ada",30));
list.add(new Person("Bob",25));
java.util.Collections.sort(list);
System.out.println(list); // [Bob(25), Ada(30)]
}
}
Das Comparator-Konzept
Comparator ist extern. Damit kann dieselbe Klasse auf unterschiedliche Arten sortiert werden, zum Beispiel nach dem Namen statt nach dem Alter.
Code: Comparator
Dieser Comparator sortiert nach name. Verschiedene Comparatoren können für dieselbe Klasse wiederverwendet werden.
public class Main {
static class Person {
String name; int age;
Person(String n,int a){ name=n; age=a; }
public String toString(){ return name+"("+age+")"; }
}
public static void main(String[] args) {
java.util.List<Person> list = new java.util.ArrayList<>();
list.add(new Person("Ada",30));
list.add(new Person("Bob",25));
java.util.Comparator<Person> byName = (p1,p2) -> p1.name.compareTo(p2.name);
java.util.Collections.sort(list, byName);
System.out.println(list); // [Ada(30), Bob(25)]
}
}
Code: umgekehrter Comparator
Comparatoren können beliebige Regeln definieren, etwa hier eine absteigende Reihenfolge.
public class Main {
public static void main(String[] args) {
java.util.List<Integer> nums = new java.util.ArrayList<>();
nums.add(5); nums.add(1); nums.add(3);
java.util.Comparator<Integer> desc = (a,b) -> b - a;
java.util.Collections.sort(nums, desc);
System.out.println(nums); // [5,3,1]
}
}
Check: Comparable vs. Comparator
Kurzer Check: Was ist der wichtigste Unterschied zwischen Comparable und Comparator?
Zusammenfassung
Zusammenfassung: Comparable definiert eine natürliche Ordnung innerhalb der Klasse. Comparator ist separat und kann viele Sortierstrategien ermöglichen.
Häufig gestellte Fragen
Ist die Lektion „Comparable und Comparator im Vergleich“ kostenlos?
Ja — der vollständige Text von „Comparable und Comparator im Vergleich“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Java Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Java Academy-Kurs umfasst insgesamt 3 Lektionen.
Was lerne ich in „Comparable und Comparator im Vergleich“?
Lernen Sie den Unterschied zwischen Comparable und Comparator für benutzerdefinierte Sortierungen kennen. Üben Sie compareTo und externe Comparators. Du übst Java Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Java Academy zu starten?
Keine Vorkenntnisse erforderlich. Java Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 3.
Wie lange dauert die Lektion „Comparable und Comparator im Vergleich“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Java Academy-Lektion Code schreiben und ausführen?
Ja. Jede Java Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Maps und Häufigkeitszählung
- Comparable und Comparator im Vergleich
- Sortieren und Suchen mit Collections