Úvod do streamů

Input/Output and Streams in Java

Alex Liu

Software Development Engineer

Práce se streamy

  • Java Streams

    • Zpracovávají kolekce dat funkcionálně a zlepšují výkon pro velká data
    • Podporované kolekce:
      • Seznamy (např. ArrayList, LinkedList)
      • Množiny (např. HashSet, TreeSet)
      • Mapy (Keys/Values jako Streams) (např. HashMap, TreeMap)
      • Pole (přes Arrays.stream())
  • Příklad ArrayList pojmenovaného names pro použití ve zbytku videa

    names: ["Alice", "Bob", "Charlie", "David"]
    
Input/Output and Streams in Java

Použití lambda výrazů se streamy

  • Lambda výrazy
    • Syntaxe: (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 and Streams in Java

Vytvoření streamu

  • Převod kolekce na Stream

    • Použijte .stream() na kolekci
    • Podporuje List, Set a Queue
  • Import třídy Stream

    import java.util.stream.Stream;
    
  • Převod ukázkového seznamu names na stream a použití .foreach() pro přístup k jednotlivým prvkům.
    Stream<String> stream = names.stream();
    stream.forEach(name -> System.out.println(name));
    
Input/Output and Streams in Java

Filtrování dat pomocí streamů

  • Použijte .filter() k výběru prvků
    • Zachová pouze odpovídající prvky
  • Převod ukázkového seznamu names na stream
    Stream<String> stream = names.stream();
    
  • Použijte .filter() pro prvky začínající na A a .forEach() pro jejich výpis
    stream
      .filter(name -> name.startsWith("A"))
      .forEach(name -> System.out.println(name));
    
  • Výsledek filtru: Alice
Input/Output and Streams in Java

Počítání prvků pomocí streamů

  • Použijte .count() pro počítání prvků

    • Vrací hodnotu ve formátu long
  • Převod ukázkového seznamu names na stream

    Stream<String> stream = names.stream();
    
  • Použijte .filter() pro prvky začínající na B a .count() pro jejich počítání

    long count = names.stream()
      .filter(name -> name.startsWith("B"))
      .count();
    
  • Výsledek počítání: 1 (pouze 1 prvek Bob začíná na B)

Input/Output and Streams in Java

Kdy používat streamy

  • Kdy použít Streams:
    • Pro velké datové sady: snižuje výkonnostní overhead
    • Pro funkcionální operace: čitelnější než smyčky
    • Pro filtrování a transformace: zjednodušuje kód
  • Kdy Streams NEPOUŽÍVAT:
    • Pro modifikaci původních kolekcí
    • Pro jednoduché smyčky s vedlejšími efekty
Input/Output and Streams in Java

Pojďme si procvičit!

Input/Output and Streams in Java

Preparing Video For Download...