Java Collection Framework
Die Algorithmen
Willemers Informatik-Ecke
Neben den Datencontainern stellt das Java Collection Framework in der Klasse Collections auch einige Methoden zur Verfügung, die als Algorithmen bezeichnet werden.

Die Algorithmen arbeiten auf den Collections, setzen also keine speziellen Container voraus.

Sortieren mit sort

Eine häufige Anwendung in der Programmierung ist die Sortierung. Die Klasse Collections stellt eine statische Methode sort zur Verfügung, die mit großer Wahrscheinlichkeit schneller ist, als das, was man sich als Programmierer selbst zusammenbaut.

Das folgende Beispiel übernimmt die übergebenen Programmparameter in eine Liste. Diese wird der Methode sort übergeben. Zum Schluss werden die Elemente in einer for-Schleife ausgegeben.

import java.util.*;

public class TestSort {
    public static void main(String[] args) {
        List aufrufparameter = Arrays.asList(args);
        Collections.sort(aufrufparameter);
        for (String string : aufrufparameter ) {
            System.out.println(string);
        }
    }
}
Hier wird gezeigt, wie das Programm übersetzt und auf der Befehlszeile aufgerufen wird.
$ javac TestSort.java 
$ java TestSort Willemer busch arnold Arnold johannes Paul Frieda ernst
Arnold
Frieda
Paul
Willemer
arnold
busch
ernst
johannes

Unordnung stiften mit shuffle

Mit der Methode shuffle kann das Gegenteil von sort erreicht werden. Die Elemente des Containers werden durchgemischt. Nach jedem Aufruf der Methode ist die Reihenfolge anders. Wenn im obigen Beispiel der Aufruf von sort durch shuffle ersetzt wird, kann man mischen.

Umdrehen mit reverse

Die Reihenfolge der Elemente in einer Collection lassen sich mit der Methode reverse umdrehen. Auch hier kann das Beispiel von sort wiederverwendet werden. Diesmal wird sort einfach durch reverse ersetzt.

Suche in der Liste: binarySearch

Die Methode binarySearch sucht mit den binären Suchverfahren in einer Collection nach einem Element. Naturgemäß findet die Methode nur etwas, wenn die Collection in sortierter Reihenfolge vorliegt. Im Beispiel erreichen wir dies durch den Aufruf von sort.
import java.util.*;

public class TestSort {
    public static void main(String[] args) {
        List aufrufparameter = Arrays.asList(args);
        Collections.sort(aufrufparameter);
        System.out.println(Collections.binarySearch(aufrufparameter, "arnold"));
    }
}
Das Programm liefert als Ergebnis die Position, an der der String "arnold" steht. Dabei ist zu berücksichtigen, dass die Position mit 0 beginnt. Wurde der Suchbegriff nicht gefunden, ist der zurückgegebene Wert negativ.