Wie funktioniert eine “for-each” Schleife in Java?

In Java wird die verkürzte for-Schleife oft als for-each-Schleife bezeichnet. Die verkürzte for-Schleife wird zum Iterieren über Arrays und Datenstrukturen, die das Iterable-Interface implementieren (List, Set, …), verwendet.

Seit Java Version 8 gibt es im Iterable-Interface die Methode forEach(), die in Verbindung mit Lambda-Ausdrücken verwendet wird.

Beispiel:

In Zeile 2 wird mit der verkürzten for-Schleife über ein Array iteriert. Die Variable n nimmt nacheinander alle Werte des Arrays a an.
In Zeile 11 werden alle Elemente einer Menge unter Zuhilfenahme der verkürzten for-Schleife aufgelistet.
In Zeile 15 werden unter Verwendung eines Lambda-Ausdrucks alle Elemente der Menge set mit der forEach() Methode ausgegeben.

int[] a = { 1, 4, 9, 16, 25 };
for (int n : a) {
    System.out.println(n);
}

SortedSet<String> set = new TreeSet<>();
set.add("Berta");
set.add("Caesar");
set.add("Anton");

for (String s : set) {
    System.out.println(s);
}

set.forEach(s -> {
    System.out.println(s);
});