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:
publicstaticfinalComparator<Student> NAME_COMPARATOR =newComparator<Student>(){publicintcompare(Student lhs,Student rhs){int result = lhs.getNachname().compareTo(rhs.getNachname());if(result >0)return1;elseif(result <0)return-1;return0;}};
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.
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.
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.
Die compareTo Methode von String arbeitet etwas anders als die anderen, denn diese liefert nicht -1,0,1 zurück sondern die "Differnz" der beiden Strings zueinander. String (Java 2 Platform SE v1.4.2) (zumindest versteh ich das so)