Sobes.tech
Junior

Na čo slúžia streamy v Jave?

sobes.tech AI

Odpoveď od AI

Pre deklaratívne spracovanie kolekcií dát. Umožňujú vykonávať sekvenčné alebo paralelné operácie nad prvkami kolekcií, ako je filtrovanie, mapovanie (transformácia), agregácia a zber výsledkov, čím je kód čitateľnejší a flexibilnejší.

Hlavné výhody:

  • Deklaratívne: Namiesto opisu "ako" vykonať operáciu (cykly, iterátory), opisujeme "čo" treba urobiť s dátami.
  • Paralelizmus: Je ľahké prepínať medzi sekvenčnou a paralelnou spracovaním, čo je užitočné pre systémy s viacerými jadrami.
  • Línosť: Medzivýpočty sa vykonávajú iba v prípade potreby, pri prítomnosti terminálnej operácie.
  • Kompaktnosť: Často umožňuje skrátiť objem kódu v porovnaní s tradičnými cyklami.

Příklad sekvenčného spracovania:

// Získanie zoznamu mien používateľov starších ako 18 rokov a ich prevod na veľké písmená
List<User> users = ... // Vaša kolekcia používateľov
List<String> adultUserNames = users.stream()
    .filter(user -> user.getAge() >= 18) // Filtrácia podľa veku
    .map(user -> user.getName().toUpperCase()) // Prevod mena na veľké písmená
    .collect(Collectors.toList()); // Zber výsledkov do zoznamu

Příklad paralelného spracovania:

// Paralelné sčítanie veľkých čísel v zozname
List<Long> numbers = ... // Vaša kolekcia čísel
long sum = numbers.parallelStream()
    .reduce(0L, Long::sum); // Paralelné sčítanie

Takto sa v Jave používajú streamy na funkcionálny a efektívny prístup ku spracovaniu dát.