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.