Introduzione agli iteratori

Input/Output e Stream in Java

Alex Liu

Software Development Engineer

Lavorare con le collection

  • HashSet di esempio per il resto del video
import java.util.HashSet;

public class SampleHashSetData { public static void main(String[] args) { HashSet<String> fruits = new HashSet<>();
fruits.add("Apple"); fruits.add("Banana");
} }
{Apple, Banana}
Input/Output e Stream in Java

Usare il for-each

  • For-Each loop
    • Sintassi: for (type x: collection){}
    • Elabora automaticamente ogni elemento
    • Funziona con più collection: List, Set, Map e altro
  • Esempio: usa il set fruits: [Apple, Banana].
for (String x : fruits) {
    System.out.println(x);
}
Apple
Banana
Input/Output e Stream in Java

Scorrere una collection con Iterator

  • Usa Iterator<>: supporta List, Set, Queue e altro
  • Importa la classe Iterator
import java.util.Iterator;

// Crea l'oggetto `Iterator` chiamato `it` per il set `fruits` Iterator<String> it = fruits.iterator(); // Il metodo `.hasNext()` verifica se ci sono altri elementi while (it.hasNext()) { // `.next()` recupera l'elemento System.out.print(it.next());}
Apple Banana
Input/Output e Stream in Java

Rimuovere elementi con Iterator

  • Usa .remove() per rimuovere con Iterator

$$

Iterator<String> it = fruits.iterator();
while (it.hasNext()) {
    String fruit = it.next();
    if (fruit.startsWith("A")) {
        // Rimuovi se l'elemento inizia con `A`
        it.remove();
        }
}
// fruits ora contiene solo "Banana"
Input/Output e Stream in Java

Rimuovere elementi con Iterator (continua)

  • Prima della rimozione:

    System.out.println(fruits);
    
    [Apple, Banana]
    
  • Dopo la rimozione:

    System.out.println(fruits);
    
    [Banana]
    
  • Garantisce eliminazione sicura ed evita ConcurrentModificationException

Icona che rappresenta l'eliminazione sicura

Input/Output e Stream in Java

Riepilogo

  • Ciclo for-each
    • Supporta
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
    • Non supporta
      • Map
      • Rimozione di elementi
  • Iterator
    • Supporta
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
      • Map (usa keySet().iterator, values().iterator o entrySet().iterator)
      • Rimozione di elementi
Input/Output e Stream in Java

Ayo berlatih!

Input/Output e Stream in Java

Preparing Video For Download...