Comparator Verständnisfrage

Status
Nicht offen für weitere Antworten.

Zenic

Mitglied
Hi,

Folgende Situation, das Projekt besteht aus 3 Klassen, Prüfungstermin, Prüfung und Student. Jede Prüfung hat ein Studenten Attribut und die Klasse Prüfungstermin hält eine Liste mit Prüfungen. Nun möchte ich die Liste nach dem Studentenname sortieren, mir wurde nahe gelegt den Comparator in der Klasse Studenten anzulegen, weil sich in dieser das Attribut befindet nach dem sortiert werden soll. Ist die folgende Variante richtig? Mir scheint das ganze etwas kompliziert und unschön, da ich den Comparator erst in Prüfungstermin erstellt hatte.

Student
Java:
    public static final Comparator<Student> NAME_COMPARATOR = new Comparator<Student>() {

	public int compare(Student lhs, Student rhs) {
	    int result = lhs.getNachname().compareTo(rhs.getNachname());
	    if (result > 0)
		return 1;
	    else if (result < 0)
		return -1;
	    return 0;
	}
    };

Prüfung
Java:
    public static final Comparator<Pruefung> NAME_COMPARATOR = new Comparator<Pruefung>() {

	public int compare(Pruefung lhs, Pruefung rhs) {
	    return lhs.getStudent().NAME_COMPARATOR.compare(lhs.getStudent(), rhs.getStudent());
	}
    };

Aufruf in Prüfungstermin
Java:
Collections.sort(cacheList, new Pruefung().NAME_COMPARATOR);

Danke
Zenic
 

Das AlgoTool

Mitglied
Also, es mag richtig sein, aber schön isses nicht.

Comparatoren sind dazu da, dass man sie an der Stelle implementiert, wo man sie braucht, nicht in der Klasse, die sie vergleichen. Gibt die Klasse eine Vergleichsmöglichkeit von sich aus vor, sollte sie Comparable implementieren.

Außerdem: static fields schould be accessed in a static way. ;)
 

Landei

Top Contributor
Warum nicht einfach:
Java:
public int compare(Student lhs, Student rhs) {
   return lhs.getNachname().compareTo(rhs.getNachname());
}
 

Zenic

Mitglied
@Landei
Die Aufschlüsselung in -1,0,1 macht es mir bei den Unittests etwas einfacher, aber das kann man natürlich auch weglassen.

Außerdem: static fields schould be accessed in a static way. ;)
Das hat irgendwie nicht funktioniert, aber der Fehler dürfte wo anders gelegen sein, denn jetzt klappt es.

Comparatoren sind dazu da, dass man sie an der Stelle implementiert, wo man sie braucht, nicht in der Klasse, die sie vergleichen. Gibt die Klasse eine Vergleichsmöglichkeit von sich aus vor, sollte sie Comparable implementieren.
Gibt es hier vielleicht noch andere Meinungen? Wird in der Praxis der Comparator in der Klasse in welcher sortiert wird angelegt oder in der Klasse die das Kriterium der Suche beinhaltet? oder ist das Geschmacksache? Denn wie schon erwähnt, hatte ich es ursprünglich in der Prüfungsterminklasse (beinhaltet die Liste), doch das wurde von meinem Prof beanstandet.
 

eRaaaa

Top Contributor
Die Aufschlüsselung in -1,0,1 macht es mir bei den Unittests etwas einfacher, aber das kann man natürlich auch weglassen.
aber genau das was du machst, macht die compareTo von string genauso, das war gemeint.

Gibt es hier vielleicht noch andere Meinungen? Wird in der Praxis der Comparator in der Klasse in welcher sortiert wird angelegt oder in der Klasse die das Kriterium der Suche beinhaltet? oder ist das Geschmacksache? Denn wie schon erwähnt, hatte ich es ursprünglich in der Prüfungsterminklasse (beinhaltet die Liste), doch das wurde von meinem Prof beanstandet.

schau dir dazu mal den abschnitt in der insel an: Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 12.4 Vergleichen von Objekten
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
N Comparable bzw 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
M Comparable und Comparator nicht ganz klar Java Basics - Anfänger-Themen 1
B Comparable & Comparator Java Basics - Anfänger-Themen 9
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
S Unterschied Comparable und Comparator Java Basics - Anfänger-Themen 2
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
H Comparable und Comparator Java Basics - Anfänger-Themen 22
B OOP Comparator - Sortierung "optisch" Darstellen Java Basics - Anfänger-Themen 17
A JTable sortieren mit einem Comparator Java Basics - Anfänger-Themen 2
S Comparator / Comparable ? Java Basics - Anfänger-Themen 3
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
D Frage zu Collection.sort bzw. Comparator u. Comparable Java Basics - Anfänger-Themen 2
S JTable mit Comparator sortieren, die Frage ist wo? Java Basics - Anfänger-Themen 4
B Wann Comparator und wann Comparable Java Basics - Anfänger-Themen 6
W Comparator Java Basics - Anfänger-Themen 3
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
A Verständnisfrage Java Basics - Anfänger-Themen 12
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
P Verständnisfrage: PageFactory.initElements Java Basics - Anfänger-Themen 2
R do while Schleife Verständnisfrage Java Basics - Anfänger-Themen 2
G while.next() Verständnisfrage Java Basics - Anfänger-Themen 16
Vivien Kurze Verständnisfrage zu Java Point aus java.awt.* Java Basics - Anfänger-Themen 5
C Erste Schritte Anfänger Verständnisfrage zum Compiler Java Basics - Anfänger-Themen 31
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102
K Verständnisfrage Server/Client BufferedReader, PrintWriter Java Basics - Anfänger-Themen 2
Der Grütz Verständnisfrage zu Übung aus Java Kurs - Schaltjahr bestimmen Java Basics - Anfänger-Themen 2
J Verständnisfrage zu throws neben Funktionen Java Basics - Anfänger-Themen 2
TimoN11 Verständnisfrage bei Aufgabe Java Basics - Anfänger-Themen 2
P Verständnisfrage zum Mapping Java Basics - Anfänger-Themen 3
M Java Version Verständnisfrage Java Basics - Anfänger-Themen 16
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
T Verständnisfrage zur Konsolenausgabe Java Basics - Anfänger-Themen 2
M Verständnisfrage zu Generics Java Basics - Anfänger-Themen 7
D Verständnisfrage zur Modellierung einer HDD Java Basics - Anfänger-Themen 17
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
S Verständnisfrage lokale Ordnerpfade Java Basics - Anfänger-Themen 1
T Verständnisfrage zu Interfaces Java Basics - Anfänger-Themen 7
J Java Starthilfe Verständnisfrage Aufgabe Java Basics - Anfänger-Themen 2
O Anfänger, Verständnisfrage Java Basics - Anfänger-Themen 3
C Verständnisfrage zu Modulo Java Basics - Anfänger-Themen 6
C Verständnisfrage bezüglich der Do-While Schleife Java Basics - Anfänger-Themen 9
L Verständnisfrage - Speicherabbild Java Basics - Anfänger-Themen 4
melly_ Verständnisfrage zu args Java Basics - Anfänger-Themen 3
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
K Verständnisfrage eines Abschnitts Java Basics - Anfänger-Themen 6
K Rekursion Verständnisfrage Java Basics - Anfänger-Themen 19
S Modell View Controller Verständnisfrage Java Basics - Anfänger-Themen 24
J Superklassen Konstruktor Verständnisfrage Java Basics - Anfänger-Themen 1
JavaTalksToMe Erste Schritte Println-Frage (Verständnisfrage) Java Basics - Anfänger-Themen 1
R Verständnisfrage zu Objekten u. Übergabeparameter Java Basics - Anfänger-Themen 8
G Collections Verständnisfrage zur For-Each-Schleife Java Basics - Anfänger-Themen 7
b1ck Interface Verständnisfrage zum GUI mit "swing" Java Basics - Anfänger-Themen 1
kilopack15 Verständnisfrage zur Verwendung von notify() bei Threads Java Basics - Anfänger-Themen 2
G Verständnisfrage zu for-each Java Basics - Anfänger-Themen 4
DontFeedTheTroll Erste Schritte Verständnisfrage zu If-Anweisung Java Basics - Anfänger-Themen 7
K Rekursion-Verständnisfrage Java Basics - Anfänger-Themen 4
J Java Server Pages - Verständnisfrage Java Basics - Anfänger-Themen 2
Z Verständnisfrage Anfängerprogramm Java Basics - Anfänger-Themen 0
T Verständnisfrage Zuweisungs-/arithmet. Operatoren Java Basics - Anfänger-Themen 2
G Methoden Verständnisfrage zur Methoden Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben