Sobes.tech
Junior

K čemu slouží streamy v Java?

sobes.tech AI

Odpověď od AI

Pro deklarativní zpracování datových kolekcí. Umožňují provádět sekvenční nebo paralelní operace nad prvky kolekcí, jako je filtrování, mapování (transformace), agregace a sběr výsledků, což činí kód čitelnějším a flexibilnější.

Hlavní výhody:

  • Deklarativní: Místo popisu "jak" provádět operaci (smyčky, iterátory), popisujeme "co" je třeba udělat s daty.
  • Paralelismus: Snadno přepínat mezi sekvenčním a paralelním zpracováním, což je užitečné pro systémy s více jádry.
  • Línost: Meziprocesy se provádějí pouze tehdy, když jsou potřeba, při přítomnosti terminální operace.
  • Kompaktnost: Často umožňuje zkrátit množství kódu ve srovnání s tradičními smyčkami.

Příklad sekvenčního zpracování:

// Získání seznamu jmen uživatelů starších 18 let a jejich převod na velká písmena
List<User> users = ... // Vaše kolekce uživatelů
List<String> adultUserNames = users.stream()
    .filter(user -> user.getAge() >= 18) // Filtrace podle věku
    .map(user -> user.getName().toUpperCase()) // Převod jména na velká písmena
    .collect(Collectors.toList()); // Sběr výsledků do seznamu

Příklad paralelního zpracování:

// Paralelní součet velkých čísel v seznamu
List<Long> numbers = ... // Vaše kolekce čísel
long sum = numbers.parallelStream()
    .reduce(0L, Long::sum); // Paralelní součet

Tímto způsobem jsou streamy v Javě používány pro funkcionální a efektivní přístup ke zpracování dat.