Gegevens transformeren met Streams

Input/Output en streams in Java

Alex Liu

Software Development Engineer

Gegevens transformeren met streams

  • Gegevens transformeren met streams

    • Formaten omzetten, info aggregeren en filteren
    • Resultaten opslaan in nieuw collectietype (bv. van List naar Set)
    • Ondersteunde collecties:
      • Lists (bv. ArrayList, LinkedList)
      • Sets (bv. HashSet, TreeSet)
      • Maps (Keys/Values als Streams) (bv. 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

Stream gebruiken om elementen te transformeren

  • Voorbereiding: importeer Set, Collectors en Stream
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

// Converteer de eerder gemaakte `ArrayList` `names` naar een `Stream` Stream<String> namesStream = names.stream();
  • Huidige data: [Alice, Bob, Charlie, David]
Input/Output en streams in Java

Stream gebruiken om elementen te transformeren (vervolg)

// Gebruik `.map()` om elk element naar hoofdletters om te zetten
Stream<String> upperCaseNameStream = namesStream.map(
        name -> name.toUpperCase())
  • Huidige data: [ALICE, BOB, CHARLIE, DAVID]
// gebruik `.collect()` en `Collectors.toSet()` om de getransformeerde stream op te slaan
upperCaseNameStream.collect(Collectors.toSet())
  • Einddata:
    {CHARLIE, ALICE, BOB, DAVID}
    
Input/Output en streams in Java

Stream gebruiken voor aggregatie

  • De methode .reduce()

    • Voegt elementen samen tot één resultaat
    • Handig voor som, concatenatie of min/max
  • Gebruik van .reduce() vraagt twee inputs

    • Beginwaarde: startwaarde voor de accumulatie, bv. 0
    • Binaire operator: functie met twee argumenten
      • (x, y) -> x + y betekent:
        • x is de opgetelde tussenstand
        • y is het huidige element
        • De operatie telt y bij x op tot alles is verwerkt
Input/Output en streams in Java

Stream gebruiken voor aggregatie: voorbeeld

  • Zet de ArrayList names om naar een Stream-object.
    Stream<String> stream = names.stream();
    
  • Gebruik .map() om de naam naar de lengte te zetten en .reduce() om ze op te tellen
    stream
      .map(name -> name.length())
      .reduce(0, (sum, length) -> sum + length);
    
  • Resultaat: 20
Input/Output en streams in Java

Laten we oefenen!

Input/Output en streams in Java

Preparing Video For Download...