Guten Tag!
Ich habe einen Objektschüler mit den folgenden Attributen:
%Vor%Ich habe arrayList verwendet, um die Schülerobjekte zu speichern Mein Problem ist, wie kann ich die StudentList nach Geburtstag mit den Sammlungen sortiert sortieren?.
%Vor%Wie kann ich es codieren?
Sammlungen.sort (????);
Danke
Sie können ein Comparator
an Collections.sort()
um die Sortierung nach Geburtstag zu verwalten:
Sie müssen getBirthday()
zu Ihrer Student
-Klasse hinzufügen, wenn Sie sie noch nicht haben.
In Java 8 können Sie die Liste mit einem Einzeiler sortieren, indem Sie verwenden Lambda-Ausdrücke und Komparator . vergleich :
%Vor%Alternativ können Sie die Methodenreferenz verwenden:
%Vor%Sie müssen einen benutzerdefinierten Vergleicher schreiben.
Etwas wie:
%Vor%Das kann eine knifflige Interviewfrage sein:)
Der beste und wiederverwendbarste Weg, den ich gefunden habe, um ein ähnliches Problem zu lösen, war die Implementierung des Interface Comparator und die Erstellung eines benutzerdefinierten Comparators nach meinen Bedürfnissen, der wiederverwendet werden kann.
Ich verlasse hier ein Beispiel, wie man eine ArrayList von Person nach ihrem Namensattribut und auch nach ihrem Genderattribut (die keine lexikographische natürliche Reihenfolge haben) sortiert.
Der Trick bestand darin, eine enum-Klasse mit dem benutzerdefinierten Attribut zu definieren, aus dem ich sortieren wollte. Wenn Sie einen comparator auf dieses enum-Attribut anwenden, wendet die compareTo () -Methode die Reihenfolge entsprechend der natürlichen Reihenfolge an, in der die Werte deklariert sind (in diesem Beispiel männlich, weiblich, andere).
%Vor%Tags und Links java