Wprowadzenie do iteratorów

Wejście/wyjście i strumienie w Javie

Alex Liu

Software Development Engineer

Praca z kolekcjami

  • Przykładowy HashSet używany w dalszej części
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}
Wejście/wyjście i strumienie w Javie

Użycie pętli For-Each

  • Pętla For-Each
    • Format: for (type x: collection){}
    • Automatycznie przetwarza każdy element
    • Działa z wieloma kolekcjami: List, Set, Map i innymi
  • Przykład: zbiór fruits: [Apple, Banana].
for (String x : fruits) {
    System.out.println(x);
}
Apple
Banana
Wejście/wyjście i strumienie w Javie

Przeglądanie kolekcji za pomocą iteratora

  • Iterator<>: obsługuje List, Set, Queue i inne
  • Importuj klasę Iterator
import java.util.Iterator;

// Tworzenie obiektu `Iterator` o nazwie `it` dla zbioru `fruits` Iterator<String> it = fruits.iterator(); // Metoda `.hasNext()` sprawdza, czy istnieją kolejne elementy while (it.hasNext()) { // Metoda `.next()` pobiera element System.out.print(it.next());}
Apple Banana
Wejście/wyjście i strumienie w Javie

Usuwanie elementów za pomocą iteratora

  • Użyj .remove(), aby usunąć element za pomocą Iterator

$$

Iterator<String> it = fruits.iterator();
while (it.hasNext()) {
    String fruit = it.next();
    if (fruit.startsWith("A")) {
        // Usuwa element, jeśli zaczyna się od `A`
        it.remove();
        }
}
// fruits zawiera teraz tylko "Banana"
Wejście/wyjście i strumienie w Javie

Usuwanie elementów za pomocą iteratora (cd.)

  • Przed usunięciem:

    System.out.println(fruits);
    
    [Apple, Banana]
    
  • Po usunięciu:

    System.out.println(fruits);
    
    [Banana]
    
  • Zapewnia bezpieczne usuwanie i zapobiega ConcurrentModificationException

Ikona reprezentująca bezpieczne usuwanie

Wejście/wyjście i strumienie w Javie

Podsumowanie

  • Pętla For-Each
    • Obsługuje
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
    • Nie obsługuje
      • Map
      • Element Removal
  • Iterator
    • Obsługuje
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
      • Map (Wymagane: keySet().iterator, values().iterator lub entrySet().iterator)
      • Element Removal
Wejście/wyjście i strumienie w Javie

Czas na ćwiczenia!

Wejście/wyjście i strumienie w Javie

Preparing Video For Download...