Iteratori e for avanzato
Attraversare le collections con Iterator e il for avanzato. Imparare a rimuovere elementi in sicurezza durante l’iterazione ed evitare gli errori comuni.
Iteratori e for avanzato è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 2 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Java Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Java Academy include 3 lezioni in totale.
Panoramica
Iterator offre un controllo passo passo per attraversare una collection. Enhanced for (for-each) è più breve e leggibile quando si devono leggere gli elementi. Utilizzi Iterator quando deve rimuovere elementi durante l'attraversamento.
Iterator e for-each
- Iterator: lo utilizzi quando potrebbe dover rimuovere elementi o quando serve un controllo preciso.
- Enhanced for: è ideale per i cicli di sola lettura.
- Non modifichi mai strutturalmente la collection all'interno di enhanced for.
Codice: Iterator di base
Iterator utilizza hasNext() e next(). Ogni chiamata a next() avanza e restituisce l'elemento.
public class Main {
public static void main(String[] args) {
java.util.List<String> names = new java.util.ArrayList<>();
names.add("Ada"); names.add("Bob"); names.add("Cyd");
java.util.Iterator<String> it = names.iterator();
while (it.hasNext()) {
String s = it.next();
System.out.println(s);
}
}
}
Problema comune
Problema comune: rimuovere direttamente gli elementi all'interno di un ciclo enhanced for spesso genera ConcurrentModificationException. Utilizzi Iterator per apportare modifiche strutturali in sicurezza.
Codice: rimozione sicura
Rimozione sicura: chiami remove() sull'Iterator subito dopo next() quando viene trovata una corrispondenza.
public class Main {
public static void main(String[] args) {
java.util.List<String> words = new java.util.ArrayList<>();
words.add("to"); words.add("be"); words.add("or"); words.add("not");
java.util.Iterator<String> it = words.iterator();
while (it.hasNext()) {
String w = it.next();
if (w.length() <= 2) {
it.remove(); // safe removal
}
}
System.out.println(words); // [not]
}
}
Codice: enhanced for/forEach
Enhanced for è chiaro per la lettura. forEach con una lambda è un altro stile conciso (Java 8+).
public class Main {
public static void main(String[] args) {
java.util.Set<String> tags = new java.util.HashSet<>();
tags.add("java"); tags.add("collections"); tags.add("oop");
// enhanced for: read-only
for (String t : tags) {
System.out.print("[" + t + "]");
}
System.out.println();
// Java 8+ forEach
tags.forEach(t -> System.out.println("tag=" + t));
}
}
Verifica sulla rimozione con Iterator
Verifica rapida: come si rimuovono in sicurezza gli elementi mentre si itera su una List?
Riepilogo
Riepilogo: utilizzi enhanced for per semplici operazioni di lettura. Utilizzi Iterator quando deve rimuovere elementi durante l'attraversamento. In questo modo si prevengono gli errori a runtime.
Impara Java con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 104
- Lezioni
- 374
Domande Frequenti
La lezione «Iteratori e for avanzato» è gratuita?
Sì — il testo completo di «Iteratori e for avanzato» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Java Academy, passa a CoddyKit PRO. Il corso Java Academy include 3 lezioni in totale.
Cosa imparerò in «Iteratori e for avanzato»?
Attraversare le collections con Iterator e il for avanzato. Imparare a rimuovere elementi in sicurezza durante l’iterazione ed evitare gli errori comuni. Eserciti Java Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Java Academy?
Non è richiesta alcuna esperienza precedente. Java Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 3.
Quanto tempo richiede la lezione «Iteratori e for avanzato»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Java Academy?
Sì. Ogni lezione Java Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Panoramica di List e Set
- Iteratori e for avanzato
- Utility per le collections