Modificare le liste con ListIterator

Input/Output e Stream in Java

Alex Liu

Software Development Engineer

Iterator vs ListIterator

Confronto tra Iterator e ListIterator

Input/Output e Stream in Java

ArrayList di esempio

import java.util.ArrayList;
public class SampleData {
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");
    }
}  
[Alice, Bob, Charlie]
Input/Output e Stream in Java

Scorrere una lista con ListIterator

// Importa la classe ListIterator
import java.util.ListIterator;

// Crea un ListIterator per la lista `names` ListIterator<String> it = names.listIterator(); // Usa .hasNext() e `.next()` per scorrere e stampare riga per riga while (it.hasNext()) { System.out.println(it.next()); }
Alice 
Bob 
Charlie
Input/Output e Stream in Java

Muoversi all'indietro con ListIterator

  • Usa .previous() per muoverti all'indietro
// Crea un ListIterator per la lista `names`
ListIterator<String> it = names.listIterator(names.size());
// Usa .hasPrevious() per verificare se l'iteratore è all'inizio
while (it.hasPrevious()) {
    // Usa .previous() per leggere in ordine inverso
    System.out.println(it.previous());}
  • Stampa in ordine inverso, output:
Charlie
Bob
Alice
Input/Output e Stream in Java

Modificare elementi durante l'iterazione

  • Uso del metodo .set()
// Crea un ListIterator per la lista names
ListIterator<String> it = names.listIterator();

// Scorri la lista e modifica con .set() while (it.hasNext()) { String name = it.next(); if ("Bob".equals(name)) it.set("Bobby"); }
  • Lista names aggiornata:
[Alice, Bobby, Charlie]
Input/Output e Stream in Java

Aggiungere elementi durante l'iterazione

  • Usa .add() per aggiungere elementi
ListIterator<String> it = names.listIterator();

// Scorri la lista e inserisci elementi con .add() while (it.hasNext()) { String name = it.next(); if ("Charlie".equals(name)) it.add("David"); }
  • Lista names aggiornata:
    [Alice, Bobby, Charlie, David]
    
Input/Output e Stream in Java

Riepilogo

  • ListIterator estende Iterator
    • Supporta traversamento avanti e indietro
    • Consente di modificare mentre si itera
  • Metodi chiave

    • .next()/.previous(): vai avanti/indietro
    • .set(): modifica l'elemento corrente
    • .add(): inserisce dinamicamente
    • .remove(): elimina in modo sicuro
    • Funziona solo con List (ArrayList, LinkedList, ecc.)
Input/Output e Stream in Java

Let's practice!

Input/Output e Stream in Java

Preparing Video For Download...