Il ciclo for-each fornisce un meccanismo per eseguire un blocco di codice per ogni elemento di una collezione. Alcune documentazioni (ad esempio quella di Oracle) li chiamano «enhanced for loop».
Ecco la sintassi generale:
for(declaration: collection) {
body;
}
declaration dichiara la variabile usata per contenere i valori assegnati dalla collezione.
collection è un array o una collezione che contiene i valori che verranno assegnati alla variabile del ciclo.
body contiene le istruzioni che verranno eseguite una volta per ogni valore della collezione.
Ad esempio:
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for(char vowel: vowels) {
System.out.println(vowel);
}
che produce il seguente output:
a
e
i
o
u
In generale, un ciclo for-each è preferibile a un ciclo for per i seguenti motivi:
for-each garantisce di iterare su tutti i valori.for-each è più dichiarativo: il codice comunica cosa sta facendo, invece di come lo fa.for-each è a prova di errore, mentre con i cicli for è facile commettere un errore off-by-one (pensa all'uso di < invece di <=).for-each funziona con tutti i tipi di collezione, comprese quelle che non supportano l'uso di un indice per accedere agli elementi (ad esempio un Set).