Arraylist komplexer Objekte alphabetisch sortieren

8

Ich weiß, dass Collections.sort(myArrayList) eine Arraylist alphabetisch sortieren kann, wenn sie Strings sind, aber was ist, wenn sie etwas komplexer sind, wie ein Datenobjekt, das zwei oder mehr Variablen enthält, einschließlich String . Gibt es eine Möglichkeit, sie dann zu sortieren?

Wenn es keinen Weg mit Collections gibt, kann ich mir vorstellen, einen for-loop- oder Standardsortieralgorithmus zu machen, um die Strings-Variable jedes Objekts zu betrachten und den Index des Objekts im Array zu verschieben.

Aber ich habe mich hauptsächlich gefragt, ob ich etwas über die Collections -Methoden übersehen habe

    
CQM 14.11.2012, 14:37
quelle

2 Antworten

26

Verwenden Sie die Funktion, die als zweiten Parameter einen Komparator verwendet .

Mit Il können Sie eine Instanz von Comparator übergeben, um nach Ihren Anforderungen zu sortieren. Beachten Sie, dass das Javadoc von Comparator Richtlinien zum Erstellen von. Enthält Komparatoren.

Sie können den Vergleicher als anonyme Klasse definieren, wenn er nur lokal verwendet wird. Hier ist ein Beispiel, in dem ich Objekte in Bezug auf eines ihrer Felder sortiere:

%Vor%

Alternativ können Sie Ihre Klasse auch dazu bringen, das Vergleichbare Schnittstelle, aber das macht nur Sinn, wenn Sie eine natürliche (offensichtliche) Reihenfolge definieren können.

    
Denys Séguret 14.11.2012, 14:39
quelle
12

Ich würde eine innere Klasse erstellen, die die Comparator-Schnittstelle implementiert:

%Vor%

Wenn Sie nun Ihre Auto-Liste nach horsePower sortieren möchten:

%Vor%     
dstronczak 14.11.2012 14:54
quelle