Ciclo for-each
Un modo piu semplice per attraversare dati
Sezione intitolata “Un modo piu semplice per attraversare dati”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:
LucaSaraMinaLeggere la sintassi
Sezione intitolata “Leggere la sintassi”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.
for-each con array
Sezione intitolata “for-each con array”int[] voti = {7, 8, 6, 9};
for (int voto : voti) { System.out.println(voto);}Output:
7869Il codice e piu breve rispetto a un for con indice.
for-each con ArrayList
Sezione intitolata “for-each con ArrayList”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:
PaneLatteMeleQuando e comodo
Sezione intitolata “Quando e comodo”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:
45Limite: non hai l’indice
Sezione intitolata “Limite: non hai l’indice”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: Luca1: Sara2: MinaLimite: modificare elementi
Sezione intitolata “Limite: modificare elementi”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:
123numero 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;}Regola pratica
Sezione intitolata “Regola pratica”Usa for-each quando devi leggere tutti gli elementi.
Usa for con indice quando devi conoscere o modificare la posizione.