Introductie tot iterators

Input/Output en streams in Java

Alex Liu

Software Development Engineer

Werken met collecties

  • Voorbeeld HashSet voor de rest van de 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 en streams in Java

For-Each-lus gebruiken

  • For-Each-lus
    • Vorm: for (type x: collection){}
    • Verwerkt automatisch elk element
    • Werkt voor meerdere collecties: List, Set, Map en meer
  • Voorbeeld: gebruik de set fruits: [Apple, Banana].
for (String x : fruits) {
    System.out.println(x);
}
Apple
Banana
Input/Output en streams in Java

Een collectie doorlopen met Iterator

  • Gebruik Iterator<>: ondersteunt List, Set, Queue en meer
  • Importeer de klasse Iterator
import java.util.Iterator;

// Maak een `Iterator`-object `it` voor de set `fruits` Iterator<String> it = fruits.iterator(); // Met `.hasNext()` controleer je of er nog elementen zijn while (it.hasNext()) { // Met `.next()` haal je het element op System.out.print(it.next());}
Apple Banana
Input/Output en streams in Java

Elementen verwijderen met Iterator

  • Gebruik .remove() om een element te verwijderen met Iterator

$$

Iterator<String> it = fruits.iterator();
while (it.hasNext()) {
    String fruit = it.next();
    if (fruit.startsWith("A")) {
        // Verwijder element als het begint met `A`
        it.remove();
        }
}
// fruits bevat nu alleen "Banana"
Input/Output en streams in Java

Elementen verwijderen met Iterator (vervolg)

  • Voor verwijderen:

    System.out.println(fruits);
    
    [Apple, Banana]
    
  • Na verwijderen:

    System.out.println(fruits);
    
    [Banana]
    
  • Zorgt voor veilig verwijderen en voorkomt ConcurrentModificationException

Pictogram dat veilig verwijderen weergeeft

Input/Output en streams in Java

Samenvatting

  • For-Each-lus
    • Ondersteunt
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
    • Ondersteunt niet
      • Map
      • Verwijderen van elementen
  • Iterator
    • Ondersteunt
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
      • Map (Gebruik keySet().iterator, values().iterator of entrySet().iterator)
      • Verwijderen van elementen
Input/Output en streams in Java

Laten we oefenen!

Input/Output en streams in Java

Preparing Video For Download...