Wprowadzenie do strumieni

Wejście/wyjście i strumienie w Javie

Alex Liu

Software Development Engineer

Praca ze strumieniami

  • Java Streams

    • Przetwarzanie kolekcji danych funkcyjnie i poprawa wydajności dla dużych danych
    • Obsługiwane kolekcje:
      • Listy (np. ArrayList, LinkedList)
      • Zbiory (np. HashSet, TreeSet)
      • Mapy (Keys/Values jako Streams) (np. HashMap, TreeMap)
      • Tablice (przez Arrays.stream())
  • Przykładowa ArrayList o nazwie names używana w dalszej części

    names: ["Alice", "Bob", "Charlie", "David"]
    
Wejście/wyjście i strumienie w Javie

Wyrażenia lambda ze strumieniami

  • Wyrażenia lambda
    • Składnia: (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
Wejście/wyjście i strumienie w Javie

Tworzenie strumienia

  • Konwersja kolekcji do Stream

    • Użyj .stream() na kolekcji
    • Obsługuje List, Set i Queue
  • Importowanie klasy Stream

    import java.util.stream.Stream;
    
  • Konwersja listy names do strumienia i użycie .foreach() do dostępu do elementów.
    Stream<String> stream = names.stream();
    stream.forEach(name -> System.out.println(name));
    
Wejście/wyjście i strumienie w Javie

Filtrowanie danych za pomocą strumieni

  • Użyj .filter() do wyboru elementów
    • Zachowuje tylko pasujące elementy
  • Konwersja listy names do strumienia
    Stream<String> stream = names.stream();
    
  • Użyj .filter() do dopasowania elementów zaczynających się od A i .forEach() do ich wyświetlenia
    stream
      .filter(name -> name.startsWith("A"))
      .forEach(name -> System.out.println(name));
    
  • Wynik filtrowania: Alice
Wejście/wyjście i strumienie w Javie

Zliczanie elementów za pomocą strumieni

  • Użyj .count() do zliczania elementów

    • Zwraca wartość w formacie long
  • Konwersja listy names do strumienia

    Stream<String> stream = names.stream();
    
  • Użyj .filter() do dopasowania elementów zaczynających się od B i .count() do ich zliczenia

    long count = names.stream()
      .filter(name -> name.startsWith("B"))
      .count();
    
  • Wynik zliczania: 1 (tylko 1 element Bob zaczyna się od B)

Wejście/wyjście i strumienie w Javie

Kiedy używać strumieni

  • Kiedy używać Streams:
    • Duże zbiory danych: Zmniejsza narzut wydajnościowy
    • Operacje funkcyjne: Czytelniejsze niż pętle
    • Filtrowanie i transformacje: Upraszcza kod
  • Kiedy NIE używać Streams:
    • Do modyfikowania oryginalnych kolekcji
    • W prostych pętlach z efektami ubocznymi
Wejście/wyjście i strumienie w Javie

Czas na ćwiczenia!

Wejście/wyjście i strumienie w Javie

Preparing Video For Download...