Wie sortiere ich eine ArrayList mit mehreren Sortierkriterien?

7

Ich habe eine Array-Liste, die Anführungszeichen-Objekte enthält. Ich möchte in der Lage sein, alphabetisch nach Name, nach Änderung und prozentualer Änderung zu sortieren. Wie kann ich meine Arraylist sortieren?

%Vor%     
Sheehan Alam 13.09.2010, 22:10
quelle

6 Antworten

9

Erstellen Sie eine geeignete Comparator , die zwei Elemente vergleicht nach Ihren gewünschten Kriterien. Dann verwenden Sie Collections.sort() auf Ihrer ArrayList.

Wenn Sie zu einem späteren Zeitpunkt nach verschiedenen Kriterien sortieren möchten, rufen Sie Collections.sort() erneut mit einem anderen Comparator auf.

    
gpeche 13.09.2010, 22:15
quelle
28

Wenn Sie (fast) immer diese Reihenfolge verwenden möchten, können Sie die Vergleichsschnittstelle zu Quote hinzufügen und eine compareTo-Methode implementieren.

%Vor%

Verwenden Sie dann eine sortierte Auflistung oder sortieren Sie eine Liste, und die Anführungszeichen werden sortiert.

Für Ad-hoc-Sortierung ist ein separater, möglicherweise anonymer Comparator besser.

    
Peter Tillemans 13.09.2010 22:16
quelle
14

Jeder hat Recht, dass Sie Komparatoren verwenden möchten. Wenn Sie auf dieser Idee aufbauen wollen, wenn Sie in der Lage sein wollen, nach mehreren Kriterien zu sortieren, dann wird eine Klasse wie diese für Sie funktionieren:

%Vor%

Dann schreiben Sie einfach sehr einfache Komparatoren für die von Ihnen gewünschten Felder und Sie können sie zu komplexeren Komparatoren leichter und mit mehr Wiederverwendung kombinieren.

    
romacafe 13.09.2010 22:36
quelle
11

Sieh dir den ComparatorChain aus der Apache Commons Collection an. Dies sollte den Job machen. Implementieren Sie keine Logik, wenn sie bereits verfügbar und getestet ist.
Auf der folgenden Website habe ich ein Tutorial: Objekte nach mehreren Attributen sortieren "

    
strangeoptics 28.09.2011 19:41
quelle
5

Sun hat einen großen Teil seines Tutorials der Sortierung in Java-Sammlungen gewidmet:
Ссылка

Es werden die Vergleichsoperator- und Comparator-Schnittstellen mit Beispielen besprochen.

    
Nikita Rybak 13.09.2010 22:15
quelle
2

Siehe Collections.sort mit einem expliziten Comparator (oder der Art Collections.sort, die die Eingabe erfordert, um Vergleichbar , wenn Sie bevorzugen).

    
user166390 13.09.2010 22:16
quelle