Salta ai contenuti

Ciclo for-each

Quando vuoi leggere tutti gli elementi di un array o di una collezione, spesso non ti serve l’indice.

In questi casi puoi usare il ciclo for-each.

String[] nomi = {"Luca", "Sara", "Mina"};
for (String nome : nomi) {
System.out.println(nome);
}

Output:

Luca
Sara
Mina
for (String nome : nomi) {
...
}

Si legge cosi:

“per ogni String chiamata nome dentro nomi, esegui questo blocco”.

nome e una variabile temporanea. A ogni giro contiene un elemento diverso.

int[] voti = {7, 8, 6, 9};
for (int voto : voti) {
System.out.println(voto);
}

Output:

7
8
6
9

Il codice e piu breve rispetto a un for con indice.

import java.util.ArrayList;
public class Lista {
public static void main(String[] args) {
ArrayList<String> prodotti = new ArrayList<>();
prodotti.add("Pane");
prodotti.add("Latte");
prodotti.add("Mele");
for (String prodotto : prodotti) {
System.out.println(prodotto);
}
}
}

Output:

Pane
Latte
Mele

Il for-each e comodo quando vuoi:

  • stampare tutti gli elementi
  • sommare tutti i numeri
  • cercare un valore
  • controllare ogni elemento senza usare la posizione

Esempio:

int[] prezzi = {10, 20, 15};
int totale = 0;
for (int prezzo : prezzi) {
totale = totale + prezzo;
}
System.out.println(totale);

Output:

45

Con for-each non hai direttamente la posizione dell’elemento.

Se devi stampare anche l’indice, usa un for normale:

String[] nomi = {"Luca", "Sara", "Mina"};
for (int i = 0; i < nomi.length; i++) {
System.out.println(i + ": " + nomi[i]);
}

Output:

0: Luca
1: Sara
2: Mina

Con un array di numeri, questa modifica non cambia l’array originale:

int[] numeri = {1, 2, 3};
for (int numero : numeri) {
numero = numero * 2;
}
for (int numero : numeri) {
System.out.println(numero);
}

Output:

1
2
3

numero e una copia temporanea del valore.

Se vuoi modificare l’array, usa l’indice:

for (int i = 0; i < numeri.length; i++) {
numeri[i] = numeri[i] * 2;
}

Usa for-each quando devi leggere tutti gli elementi.

Usa for con indice quando devi conoscere o modificare la posizione.