Java Array sortieren

Array sortieren

In einem Java Array hat jedes Objekt einen festen Platz mit einer laufenden Nummer.
Hier wird gezeigt, wie man die Objekte im Array sortieren kann (also sozusagen "Arrays sortieren").

Am einfachsten geht es mit Objekten, die das Interface java.lang.Comparable implementieren, wie zum Beispiel die ganzen Java Daten-Container Klassen String, Integer, Long, Float, Double, BigInteger, BigDecimal und so weiter:

    final String[] namen = new String[] {"Carlos", "Bernd", "Doreen", "Anja"};
    Arrays.sort(namen);

    final int[] zahlen = new int[] {7,3,9,2};
    Arrays.sort(zahlen);

Man kann aber auch einen java.util.Comparator übergeben, entweder, weil die Objekte im Array nicht das Interface Comparable implementieren, oder aber, weil man eine eigene Sortierreihenfolge vorgeben will, als in der zu sortierenden Java Klasse vorgesehen ist:

    final String[] vokabeln = new String[] {"Haus", "wertvoll", "Zahn", "beliebt"};
    Arrays.sort(namen, String.CASE_INSENSITIVE_ORDER);

Binäre Suche

Im sortierten Array kann man mittels binärer Suche schneller ein Objekt auffinden, als dies bei sequenzieller Suche der Fall wäre:
    final String[] irgendeinSortiertesArray = new String[] {"blau", "gelb", "rot", "schwarz", "weiß"};
    final int position1 = Arrays.binarySearch(irgendeinSortiertesArray, "blau");
    final int position2 = Arrays.binarySearch(irgendeinSortiertesArray, "blau", String.CASE_INSENSITIVE_ORDER);

Auch bei der binären Suche kann also ein Comparator übergeben werden.

Wichtig: die Sortierung des Arrays und der Comparator beim Suchen müssen übereinstimmen, ansonsten ergeben sich zufällige, nutzlose Ergebnisse.
In diesem Beispiel sind alle Farben klein geschrieben; deswegen macht es keinen Unterschied, ob Groß- und Kleinschreibung unterschieden werden oder nicht.

Liste sortieren (ArrayList, List)

Auch die Sortierung von Elementen in einer Liste, zum Beispiel einer ArrayList, muss in Java nicht selbst implementiert werden:
    final List<String> namen = new ArrayList<String>();
    namen.add("Hans");
    namen.add("Werner");
    namen.add("Alfred");
    namen.add("Klaus");
    namen.add("Eugen");
    Collections.sort(namen); // ArrayList sortieren
    System.out.println(namen); // zeigt die sortierte Liste



Nach oben, Inhaltsverzeichnis, Impressum Admin: Artikel editieren