Veröffentlicht 30. Oktober 201212 j Guten tag, heute stell ich mal wieder eine Frage. Also momentan lerne ich Java und bin beim Thema Comparatoren, wo ich noch nicht ganz durchgestiegen bin. Ich muss einen Comparator schreiben der meine arralist mit "Kunden objekten" sortiert. Erst den nachnamen und dann den vornamen und dann zurück gibt. Mein Anfang: Aufruf... Collection.sort(kunden, new KundenComparator()); class KundenComparator implements Comparator<Kunde> { @Override public int compare(Kunde k1, Kunde k2) { } Wäre nett wenn mir jemand helfen kann, villeicht auch mit einer leichteren Methode. Hoffe ich habe es klar ausgedrückt
30. Oktober 201212 j Die Vorgehensweise ist eigentlich immer gleich: Zuerst prüfst du, ob die Objekte sich in der wichtigsten Eigenschaft (bei dir: Nachname) unterscheiden. Falls ja, gibst du das entstprechende Vergleichsergebnis zurück. Falls die wichtigste Eigenschaft gleich ist, machst du dasselbe mit der nächsten usw. Wenn alle für die Sortierung relevanten Eigenschaften gleich sind, gibst du 0 zurück.
30. Oktober 201212 j Autor Kann ich sagen " k1.getNachname.compareto(k2.getNachname)"? ..... ich habe nämlich mit get und set gearbeitet. Oder habe ich da einen Denkfehler?
30. Oktober 201212 j int nachnamevergleichsergebnis = k1.getNachname().compareTo(k2.getNachname()); if(nachnamevergleichsergebnis != 0) // Nachnamen sind nicht gleich return nachnamevergleichsergebnis; // Jetzt dasselbe für Vorname // Und am Ende, wenn alles gleich war: return 0; [/php]
30. Oktober 201212 j Autor Was ich dann noch nicht ganz verstehe ist "return 0" was der dann genau zurück gibt.
30. Oktober 201212 j Naja, wenn für die zwei Objekte die zu vergleichenden Attribute gleich sind, gibst du 0 zurück. Da ändert sich dann beim sortieren nichts an der Reihenfolge, bleibt an der Stelle einfach so wie es ist.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.