Eine ArrayList von Person mit Java-Sammlungen sortieren

7

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%     
David Tunnell 07.10.2012, 18:24
quelle

4 Antworten

26

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.

%Vor%

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: -

%Vor%     
Rohit Jain 07.10.2012, 18:28
quelle
3

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.

    
Satheesh Cheveri 07.10.2012 18:45
quelle
2

Versuchen Sie Folgendes:

%Vor%     
MudvariSijan 26.08.2013 18:57
quelle
0

Verwenden Sie Collections.sort (managerNameList);

%Vor%     
Antesh Sharma 21.11.2013 06:22
quelle

Tags und Links