Unter dem Code, den ich verwende, funktioniert es gut und gibt die Namen aus, außer dass die Sortiermethode nicht funktioniert. Ich erwartete "Collections.sort (nameFromText);" um die ArrayList in alphabetischer Reihenfolge nach Vornamen zu sortieren.
Was mache ich falsch?
%Vor% Collections.sort(List<T>)
Methode erwartet, dass das Element der zu vergleichenden Liste vergleichbar ist. Entweder sollte der Elementtyp T
die Comparable
-Schnittstelle implementieren oder Sie sollten das überladene sort()
Methode, die ein generisches Comparator
Instanz.
Im folgenden Code erfüllen Sie keine der oben genannten Bedingungen. Weder Ihre Person
-Klasse implementiert Comparable
, noch Sie übergeben% Comparator
Instanz.
Sie sollten eine Comparator
für Ihre Person
-Klasse erstellen, um der sort()
-Methode zu sagen, wie sie zu sortieren ist (möglicherweise in String, der in der Person-Klasse gespeichert ist)
So implementieren Sie einen generischen Komparator:
%Vor% Und dann sollte Ihr Collections.sort()
Methodenaufruf wie folgt aussehen: -
Alternativ können Sie die Vergleichsschnittstelle direkt in der Person-Klasse implementieren und die Methode 'compareTo (Object obj)' überschreiben. In diesem Fall müssten Sie keine neue Klasse für den Vergleicher erstellen. Und das verhält sich wie eine eingebaute Sortierung.
Tags und Links java io sorting collections