Modyfikowanie list za pomocą ListIterator

Wejście/wyjście i strumienie w Javie

Alex Liu

Software Development Engineer

Iterator vs ListIterator

Porównanie Iterator i ListIterator

Wejście/wyjście i strumienie w Javie

Przykładowa ArrayList

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]
Wejście/wyjście i strumienie w Javie

Przeglądanie listy za pomocą ListIterator

// Import ListIterator class
import java.util.ListIterator;

// Create ListIterator object for sample list `names` ListIterator<String> it = names.listIterator(); // Use .hasNext() and `.next()` to iterate the list and print line by line while (it.hasNext()) { System.out.println(it.next()); }
Alice 
Bob 
Charlie
Wejście/wyjście i strumienie w Javie

Cofanie się za pomocą ListIterator

  • Użyj .previous(), aby cofnąć się na liście
// Create ListIterator object for sample list `names`
ListIterator<String> it = names.listIterator(names.size());
// Use .hasPrevious() to check if the iterator reach the beginning of the list
while (it.hasPrevious()) {
    // Use .previous() to retrieve the element in reverse order
    System.out.println(it.previous());}
  • Elementy wyświetlone w odwrotnej kolejności, wynik:
Charlie
Bob
Alice
Wejście/wyjście i strumienie w Javie

Modyfikowanie elementów podczas iteracji

  • Korzystanie z metody .set()
// Create ListIterator object for sample list names
ListIterator<String> it = names.listIterator();

// Iterate the list and modify element using .set() while (it.hasNext()) { String name = it.next(); if ("Bob".equals(name)) it.set("Bobby"); }
  • Zaktualizowana lista names:
[Alice, Bobby, Charlie]
Wejście/wyjście i strumienie w Javie

Dodawanie elementów podczas iteracji

  • Użyj .add(), aby dodać elementy
ListIterator<String> it = names.listIterator();

// Iterate the list and insert element using .add() while (it.hasNext()) { String name = it.next(); if ("Charlie".equals(name)) it.add("David"); }
  • Zaktualizowana lista names:
    [Alice, Bobby, Charlie, David]
    
Wejście/wyjście i strumienie w Javie

Podsumowanie

  • ListIterator rozszerza Iterator
    • Obsługuje iterację do przodu i do tyłu
    • Umożliwia modyfikowanie elementów podczas iteracji
  • Podsumowanie kluczowych metod

    • .next()/.previous(): Nawigacja do przodu i do tyłu
    • .set(): Modyfikacja bieżącego elementu
    • .add(): Dynamiczne wstawianie elementów
    • .remove(): Bezpieczne usuwanie elementów
    • Działa tylko na listach (ArrayList, LinkedList itp.)
Wejście/wyjście i strumienie w Javie

Czas na ćwiczenia!

Wejście/wyjście i strumienie w Javie

Preparing Video For Download...