Вступ до Streams

Ввід/вивід і потоки в Java

Alex Liu

Software Development Engineer

Робота зі Streams

  • Java Streams

    • Опрацьовуйте колекції даних функціонально та підвищуйте продуктивність на великих даних
    • Підтримувані колекції:
      • Списки (напр., ArrayList, LinkedList)
      • Множини (напр., HashSet, TreeSet)
      • Мапи (Keys/Values як Streams) (напр., HashMap, TreeMap)
      • Масиви (через Arrays.stream())
  • Приклад ArrayList з назвою names для решти відео

    names: ["Alice", "Bob", "Charlie", "David"]
    
Ввід/вивід і потоки в Java

Використання лямбда-виразів зі Stream

  • Лямбда-вирази
    • Синтаксис: (parameters) -> { expression }
names.forEach(
    // `name` — це параметр, що представляє кожен елемент списку
    name -> 
        // Вираз, який виконується для кожного елемента.
        System.out.println(name));
Alice 
Bob 
Charlie 
David
Ввід/вивід і потоки в Java

Створення Stream

  • Перетворіть колекцію даних на Stream

    • Використайте .stream() для колекції
    • Підтримує List, Set і Queue
  • Імпортуйте клас Stream

    import java.util.stream.Stream;
    
  • Перетворіть список names на stream і використайте .foreach() для доступу до елементів
    Stream<String> stream = names.stream();
    stream.forEach(name -> System.out.println(name));
    
Ввід/вивід і потоки в Java

Фільтрація даних зі Streams

  • Використайте .filter() для відбору елементів
    • Залишає лише відповідні елементи
  • Перетворіть список names на stream
    Stream<String> stream = names.stream();
    
  • Використайте .filter() для елементів, що починаються з A, і .forEach() для виводу
    stream
      .filter(name -> name.startsWith("A"))
      .forEach(name -> System.out.println(name));
    
  • Результат фільтра: Alice
Ввід/вивід і потоки в Java

Підрахунок елементів зі Streams

  • Використайте .count() для підрахунку елементів

    • Повертає значення типу long
  • Перетворіть список names на stream

    Stream<String> stream = names.stream();
    
  • Застосуйте .filter() для елементів, що починаються з B, і .count() для підрахунку

    long count = names.stream()
      .filter(name -> name.startsWith("B"))
      .count();
    
  • Результат підрахунку: 1 (лише 1 елемент Bob починається з B)

Ввід/вивід і потоки в Java

Коли використовувати Streams

  • Коли варто використовувати Streams:
    • Для великих наборів даних: менші витрати й краща продуктивність
    • Для функціональних операцій: читабельніше за цикли
    • Для фільтрації та перетворень: спрощує код
  • Коли НЕ варто використовувати Streams:
    • Для зміни початкових колекцій
    • Для простих циклів із побічними ефектами
Ввід/вивід і потоки в Java

Давайте потренуємось!

Ввід/вивід і потоки в Java

Preparing Video For Download...