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.