Wie lässt sich eine ArrayList natürlich sortieren?

Eine ArrayList lässt sich auf sehr einfache Weise in ihrer natürlichen Reihenfolge sortieren. Hier muss der Methode sort() lediglich null als Parameter übergeben werden.

public class ArrayListSortieren {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("Motobecane");
        list.add("Scott");
        list.add("Indian");
        list.add("Ardie");
        list.add("Henderson");
        list.sort(null);
        gibAus(list);
    }

    private static void gibAus(ArrayList<String> list) {
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

Die Ausgabe sieht wie folgt aus:

Ardie
Henderson
Indian
Motobecane
Scott

Diese Sortierung der historischen Motorradmarken erfolgt hier der natürlichen Reihenfolge der Strings, also der alphabetischen Abfolge nach. Soll das auf eine andere Weise erfolgen, so kann dies durch die Definition einer Comparator-Klasse erreicht werden. Sie muss das Interface Comparator mit dessen Methode compare() implementieren, z.B. um nach Stringlänge zu sortieren:

class LengthComparator implements Comparator<String> {
    @Override
    public int compare(String s1, String s2) {
        return s1.length() - s2.length();
    } 
}

Hier müssen lediglich zwei Parameter des zu vergleichenden Typs (hier Strings) übergeben werden. Deren eigentlicher Vergleich wird dann im Methodenkörper durch Subtraktion der Stringlängen realisiert.
Ein Objekt der den Comparator implementierenden Klasse muss hierzu der Methode sort<() statt null als Parameter übergeben werden [10].

// ...
list.sort(new LengthComparator());
// ...

Die Ausgabe zeigt dann:

Scott
Ardie
Indian
Henderson
Motobecane

Soll eine weitergehende Sortierung erfolgen, etwa nach Leistung oder Baujahr einzelner Motorräder, reicht eine Angabe der Namensstrings natürlich nicht aus. Es muss eine eigene Klasse erzeugt werden, der dann selbstverständlich auch eine speziellere Sortierung zugewiesen werden kann. Das genaue Vorgehen hierbei wird im Artikel 'Objekte sortieren' erläutert.

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.