Comparator / Comparable ?

Status
Nicht offen für weitere Antworten.
S

sin

Gast
hallo, ich verstehe (trotz tutorial) nicht den direkten unterschied zwischen diesen beiden interfaces. ist der vorteil eines comparators einfach das man zwei objekte bzw. verschiedene objekte hat die man miteinander vergleichen kann?

gruß
 
S

SlaterB

Gast
eine Klasse kann Comparable sein und dann compareTo definieren,
aber diese compareTo gibts nur genau einmal, die Standardsortierung,

Comparator sind separate Klassen, die andere Sortierungreihenfolgen vorgeben können,
es kann viele Comaratoren geben, auch dynamisch erst zur Laufzeit erstellt,
das Verhalten von compareTo der normalen Klasse zu verändern wäre schwierig und unschön,
wirkt sich nämlich auf alle derartigen Objekte im Programm aus,
nicht nur z.B. auf die aktuell per Comparator zu sortierende Liste
 

Marco13

Top Contributor
Wenn eine Klasse "Comparable" ist, dann IST sie vergleichbar. Sie weiß selbst, wie sie mit anderen Objekten verglichen werden kann.

Mit einem Comparator kann man zwei beliebige Objekte vergleichen. Die Objekte müssen nicht Comparable sein. Der Comparator bestimmt, WIE die Objekte verglichen werden.

Ein wichtiger Unterschied ist, dass Objekte "Comparable" sein können, und sie damit EIN Vergleichskriterum für sich festelegen. Mit Comparatoren kann man "von außen" ggf. auch mehrere Kriterien festlegen. Ein Beispiel: Eine Person kann "Comparable" sein, indem ihr Vorname mit dem einer anderen Person verglichen wird.
Code:
class Person implements Comparable<Person>
{
    String vorname;
    String nachname;

    public int compareTo(Person other) { return vorname.compareTo(other.vorname); }
}

Wenn man beliebige Vergleichskriterien (von außen) festlegen will, kann man Comparatoren verwenden
Code:
class Person
{
    String vorname;
    String nachname;
}

class VornameComparator implements Comparator
{
    public int compare(Person p0, Person p1) { return p0.vorname.compareTo(p1.vorname); }
}
class NachnameComparator implements Comparator
{
    public int compare(Person p0, Person p1) { return p0.nachname.compareTo(p1.nachname); }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Comparable bzw Comparator Java Basics - Anfänger-Themen 5
M Comparable und Comparator nicht ganz klar Java Basics - Anfänger-Themen 1
B Comparable & Comparator Java Basics - Anfänger-Themen 9
S Unterschied Comparable und Comparator Java Basics - Anfänger-Themen 2
H Comparable und Comparator Java Basics - Anfänger-Themen 22
D Frage zu Collection.sort bzw. Comparator u. Comparable Java Basics - Anfänger-Themen 2
B Wann Comparator und wann Comparable Java Basics - Anfänger-Themen 6
N Spezielle frage zum Comparator Java Basics - Anfänger-Themen 6
M Comparator Java Basics - Anfänger-Themen 25
M Comparator Java Basics - Anfänger-Themen 4
berserkerdq2 Wie lege ich ein Attribut comparator an? Java Basics - Anfänger-Themen 13
W Personen sortieren mit Comparator Java Basics - Anfänger-Themen 9
H Comparator Fehlermeldung Java Basics - Anfänger-Themen 5
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
R Methode zwei Sortierkriterien der Klasse Comparator übergeben Java Basics - Anfänger-Themen 4
O Lambda Ausdrücke in einem Comparator Java Basics - Anfänger-Themen 4
A Priority Queue / Comparator Java Basics - Anfänger-Themen 6
I Comparator<T> Interface als Methodenparamter Java Basics - Anfänger-Themen 4
L Binäre Suche mit Comparator Java Basics - Anfänger-Themen 5
J Comparator Java Basics - Anfänger-Themen 21
A Comparator Java Basics - Anfänger-Themen 4
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
V Comparator Java Basics - Anfänger-Themen 16
S Integer/Value-Paar in Prio-Queue ohne Comparator Java Basics - Anfänger-Themen 5
C Comparator und private Variablen Java Basics - Anfänger-Themen 7
S Comparator für Generiks Java Basics - Anfänger-Themen 6
Helgon Interface Comparator wird nicht instanziert Java Basics - Anfänger-Themen 3
C Comparator mit Double Werten? Java Basics - Anfänger-Themen 12
E Comparator sortiert falsch... Java Basics - Anfänger-Themen 2
M Comparator Java Basics - Anfänger-Themen 7
B OOP Logikhilfe zum Comparator 2 Java Basics - Anfänger-Themen 12
B OOP Logikhilfe zum Comparator Java Basics - Anfänger-Themen 11
G Comparator Problem Java Basics - Anfänger-Themen 5
X eigener Mergesort auf generischen Typen mit Comparator Java Basics - Anfänger-Themen 6
Z Comparator Verständnisfrage Java Basics - Anfänger-Themen 5
B OOP Comparator - Sortierung "optisch" Darstellen Java Basics - Anfänger-Themen 17
A JTable sortieren mit einem Comparator Java Basics - Anfänger-Themen 2
G Objekte mit dem Attribut title mit Comparator sortieren Java Basics - Anfänger-Themen 5
P unchecked conversion to conform to Comparator Java Basics - Anfänger-Themen 3
G Comparator- methode compare exception werfen Java Basics - Anfänger-Themen 4
B interface Comparator Java Basics - Anfänger-Themen 4
M Hilfe bei der Erstellung der Comparator Klasse Java Basics - Anfänger-Themen 10
M ArrayList sortieren mittels Comparator Java Basics - Anfänger-Themen 10
G Sortieren ohne Comparator? Java Basics - Anfänger-Themen 4
G Comparator Java Basics - Anfänger-Themen 10
S Frage zu Comparator Java Basics - Anfänger-Themen 3
G ArrayList und Comparator Java Basics - Anfänger-Themen 6
M Comparator - Sortierkriterium Java Basics - Anfänger-Themen 11
L Comparator Java Basics - Anfänger-Themen 5
T Problem mit Comparator! Java Basics - Anfänger-Themen 7
C Anstatt Spalte, Zeile mit Comparator sortieren . Java Basics - Anfänger-Themen 5
B Liste sortieren mit Comparator Java Basics - Anfänger-Themen 2
S JTable mit Comparator sortieren, die Frage ist wo? Java Basics - Anfänger-Themen 4
W Comparator Java Basics - Anfänger-Themen 3
J HashSet mit Comparable sortieren Java Basics - Anfänger-Themen 13
J Interface Comparable<T> Java Basics - Anfänger-Themen 10
L Interface & Comparable Java Basics - Anfänger-Themen 15
I Generics und Comparable Java Basics - Anfänger-Themen 14
O Comparable Generic Java Basics - Anfänger-Themen 24
R Quicksort mit Interface Comparable Java Basics - Anfänger-Themen 6
Kornblume Comparable Interface für Objektvergleiche nutzen Java Basics - Anfänger-Themen 15
C Was macht `public class ClassName<T extends Comparable<T>>`? Java Basics - Anfänger-Themen 14
M Generische Liste aus Comparable-Objekten Java Basics - Anfänger-Themen 6
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
K Comparable - Objekte aus Array vergleichen und größtes auswählen Java Basics - Anfänger-Themen 1
Shizmo Frage zu Comparable Java Basics - Anfänger-Themen 4
L LinkedList Comparable < > MEHRFACH implementieren? Java Basics - Anfänger-Themen 3
N Datentypen LocalDate Generic Comparable Java Basics - Anfänger-Themen 2
S Generics und Comparable Interface Java Basics - Anfänger-Themen 5
N Compiler-Fehler Comparable / compareTo implementierung Java Basics - Anfänger-Themen 2
F Comparable mit String Java Basics - Anfänger-Themen 5
F Objekte sortieren mit Comparable Java Basics - Anfänger-Themen 9
R Mehrere Interfaces(Comparable, ...) Java Basics - Anfänger-Themen 2
C Comparable Interface Java Basics - Anfänger-Themen 8
T Interface Interface Comparable Problem... Java Basics - Anfänger-Themen 2
H Interface Comparable Verständnisfrage Java Basics - Anfänger-Themen 6
B Object "Method" in TreeSet, Fehler beim Vergleichen/Comparable Java Basics - Anfänger-Themen 9
pg1337 Interface Comparable-Interface bei HashMap Java Basics - Anfänger-Themen 21
J Probleme mit Comparable, compareTo() Java Basics - Anfänger-Themen 2
A Comparable interface Java Basics - Anfänger-Themen 26
I Interface Comparable für Server-Item-Interface Java Basics - Anfänger-Themen 12
P Comparable und Generics Java Basics - Anfänger-Themen 6
S comparable und equals Java Basics - Anfänger-Themen 7
M Frage zum Interface Comparable Java Basics - Anfänger-Themen 3
S Comparable Java Basics - Anfänger-Themen 4
S instanceof Comparable...geht nicht? Java Basics - Anfänger-Themen 20
M comparable funktion & reverse funktion Java Basics - Anfänger-Themen 8
H Mehrere Comparable Java Basics - Anfänger-Themen 4
D Comparable - Bucketsort / Radixsort? Java Basics - Anfänger-Themen 2
B Mehrere Werte mit Comparable sortieren Java Basics - Anfänger-Themen 14
S String umwandeln in Comparable Java Basics - Anfänger-Themen 6
R Comparable Interface Funktionalität selbst programmieren? Java Basics - Anfänger-Themen 3
A Interface Comparable Java Basics - Anfänger-Themen 2
J Comparable Java Basics - Anfänger-Themen 9
frau-u Wie vergleicht Comparable Java Basics - Anfänger-Themen 2
M Comparable - Bedingung erzwingen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben