Introductie tot Streams

Input/Output en streams in Java

Alex Liu

Software Development Engineer

Werken met Streams

  • Java Streams

    • Verwerk datacollecties functioneel en verbeter prestaties bij grote data
    • Ondersteunde collecties:
      • Lists (bijv. ArrayList, LinkedList)
      • Sets (bijv. HashSet, TreeSet)
      • Maps (Keys/Values als Streams) (bijv. HashMap, TreeMap)
      • Arrays (via Arrays.stream())
  • Voorbeeld ArrayList genaamd names voor de rest van de video

    names: ["Alice", "Bob", "Charlie", "David"]
    
Input/Output en streams in Java

Lambda's gebruiken met Stream

  • Lambda-expressies
    • Syntax: (parameters) -> { expression }
names.forEach(
    // `name` is a parameter representing each element in the list
    name -> 
        // This is the expression executed for each element.
        System.out.println(name));
Alice 
Bob 
Charlie 
David
Input/Output en streams in Java

Een Stream maken

  • Zet een datacollectie om naar een Stream

    • Gebruik .stream() op een collectie
    • Ondersteunt List, Set en Queue
  • Importeer de Stream-klasse

    import java.util.stream.Stream;
    
  • Zet de voorbeeldlijst names om naar een stream en gebruik .foreach() om elk element te lezen.
    Stream<String> stream = names.stream();
    stream.forEach(name -> System.out.println(name));
    
Input/Output en streams in Java

Data filteren met Streams

  • Gebruik .filter() om elementen te selecteren
    • Behoudt alleen matchende elementen
  • Zet de voorbeeldlijst names om naar een stream
    Stream<String> stream = names.stream();
    
  • Gebruik .filter() voor elementen die beginnen met A en .forEach() om ze te printen
    stream
      .filter(name -> name.startsWith("A"))
      .forEach(name -> System.out.println(name));
    
  • Filterresultaat: Alice
Input/Output en streams in Java

Elementen tellen met Streams

  • Gebruik .count() om elementen te tellen

    • Geeft een waarde in long terug
  • Zet de voorbeeldlijst names om naar een stream

    Stream<String> stream = names.stream();
    
  • Gebruik .filter() voor elementen die beginnen met B en .count() om ze te tellen

    long count = names.stream()
      .filter(name -> name.startsWith("B"))
      .count();
    
  • Telresultaat: 1 (slechts 1 element Bob begint met B)

Input/Output en streams in Java

Wanneer Streams gebruiken

  • Wanneer Streams gebruiken:
    • Voor grote datasets: minder performance-overhead
    • Voor functionele operaties: leesbaarder dan loops
    • Voor filteren en transformeren: vereenvoudigt code
  • Wanneer NIET Streams gebruiken:
    • Bij het wijzigen van originele collecties
    • Voor simpele loops met bijwerkingen
Input/Output en streams in Java

Laten we oefenen!

Input/Output en streams in Java

Preparing Video For Download...