Introduktion till Streams

Input/Output och strömmar i Java

Alex Liu

Software Development Engineer

Arbeta med Streams

  • Java Streams

    • Bearbetar datamängder funktionellt och förbättrar prestanda för stora datamängder
    • Stödda samlingar:
      • Listor (t.ex. ArrayList, LinkedList)
      • Mängder (t.ex. HashSet, TreeSet)
      • Maps (Keys/Values som Streams) (t.ex. HashMap, TreeMap)
      • Arrayer (via Arrays.stream())
  • Exempellistans ArrayList heter names och används i resten av videon

    names: ["Alice", "Bob", "Charlie", "David"]
    
Input/Output och strömmar i Java

Använda lambdauttryck med Stream

  • Lambdauttryck
    • 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 och strömmar i Java

Skapa en Stream

  • Konvertera en samling till Stream

    • Använd .stream() på en samling
    • Stöder List, Set och Queue
  • Importera klassen Stream

    import java.util.stream.Stream;
    
  • Konverterar exempellistan names till en stream och använder .foreach() för att komma åt varje element.
    Stream<String> stream = names.stream();
    stream.forEach(name -> System.out.println(name));
    
Input/Output och strömmar i Java

Filtrera data med Streams

  • Använd .filter() för att välja element
    • Behåller bara matchande element
  • Konverterar exempellistan names till en stream
    Stream<String> stream = names.stream();
    
  • Använd .filter() för att matcha element som börjar med A och .forEach() för att skriva ut dem
    stream
      .filter(name -> name.startsWith("A"))
      .forEach(name -> System.out.println(name));
    
  • Filterresultat: Alice
Input/Output och strömmar i Java

Räkna element med Streams

  • Använd .count() för att räkna element

    • Returnerar värdet i long-format
  • Konverterar exempellistan names till en stream

    Stream<String> stream = names.stream();
    
  • Använd .filter() för att matcha element som börjar med B och .count() för att räkna dem

    long count = names.stream()
      .filter(name -> name.startsWith("B"))
      .count();
    
  • Räkneresultat: 1 (bara 1 element, Bob, börjar med B)

Input/Output och strömmar i Java

När ska du använda Streams?

  • När du bör använda Streams:
    • För stora datamängder: minskar prestandakostnader
    • För funktionella operationer: mer läsbart än loopar
    • För filtrering och transformationer: förenklar koden
  • När du INTE bör använda Streams:
    • När du ändrar i den ursprungliga samlingen
    • För enkla loopar med sidoeffekter
Input/Output och strömmar i Java

Nu kör vi en övning!

Input/Output och strömmar i Java

Preparing Video For Download...