Datenumwandlung mit Streams

Ein-/Ausgabe und Streams in Java

Alex Liu

Software Development Engineer

Datenumwandlung mit Streams

  • Datenumwandlung mit Streams

    • Datenformate konvertieren, Informationen aggregieren und filtern
    • Ergebnisse in neuem Sammlungstyp speichern (z. B. von List zu Set)
    • Unterstützte Collections:
      • Listen (z. B. ArrayList, LinkedList)
      • Sets (z. B. HashSet, TreeSet)
      • Maps (Keys/Values als Streams) (z. B. HashMap, TreeMap)
      • Arrays (über Arrays.stream())
  • Beispiel-ArrayList namens names für den Rest des Videos

    names: ["Alice", "Bob", "Charlie", "David"]
    
Ein-/Ausgabe und Streams in Java

Elemente mit Stream transformieren

  • Vorbereitung: benötigte Klassen Set, Collectors und Stream importieren
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

// Convert the `ArrayList` we created earlier `names` to a `Stream` Stream<String> namesStream = names.stream();
  • Aktuelle Daten: [Alice, Bob, Charlie, David]
Ein-/Ausgabe und Streams in Java

Elemente mit Stream transformieren (Fortsetzung)

// Use `.map()` to convert each element to upper case
Stream<String> upperCaseNameStream = namesStream.map(
        name -> name.toUpperCase())
  • Aktuelle Daten: [ALICE, BOB, CHARLIE, DAVID]
// use `.collect()` and `Collectors.toSet()` to store the transformed stream data
upperCaseNameStream.collect(Collectors.toSet())
  • Enddaten:
    {CHARLIE, ALICE, BOB, DAVID}
    
Ein-/Ausgabe und Streams in Java

Stream für Aggregation nutzen

  • Die Methode .reduce()

    • Aggregiert Elemente zu einem einzigen Ergebnis
    • Nützlich für Summen, Verkettung oder Min/Max
  • Nutzung von .reduce() mit zwei Eingaben

    • Initialwert: Startwert für die Akkumulation, z. B. 0
    • Binärer Operator: Eine Funktion mit zwei Argumenten
      • (x, y) -> x + y bedeutet:
        • x ist die bisherige Summe
        • y ist das aktuell verarbeitete Element
        • Die Operation addiert y zu x, bis alle Elemente verarbeitet sind
Ein-/Ausgabe und Streams in Java

Stream für Aggregation: Beispiel

  • Wandle die ArrayList names in ein Stream-Objekt um.
    Stream<String> stream = names.stream();
    
  • Verwende .map(), um Namen in ihre Länge zu konvertieren, und .reduce(), um sie aufzuaddieren
    stream
      .map(name -> name.length())
      .reduce(0, (sum, length) -> sum + length);
    
  • Ergebnis: 20
Ein-/Ausgabe und Streams in Java

Lass uns üben!

Ein-/Ausgabe und Streams in Java

Preparing Video For Download...