Sobes.tech
Junior

Jaký je hlavní nápad Stream API v Java?

sobes.tech AI

Odpověď od AI

Hlavní myšlenkou Stream API je poskytnout deklarativní způsob zpracování kolekcí dat. Místo imperativního iterativního přístupu s explicitní správou cyklů a stavů umožňují streamy popsat co je třeba s daty udělat (filtrace, transformace, agregace), zatímco jak to udělat zůstává na API.

Klíčové koncepty:

  • Neměnnost: Streamy nemění původní zdroj dat. Operace na streamu vytvářejí nové streamy nebo výsledky.
  • Líné vyhodnocování: Mnoho operací streamu, jako filter() a map(), jsou mezistupně. Neprovádějí se, dokud není volána terminální operace, například collect() nebo forEach(). To umožňuje optimalizaci provádění.
  • Pipeline: Operace streamu mohou být spojeny do pipeline. Každý prvek prochází pipeline sekvenčně nebo paralelně.
  • Paralelní zpracování: Streamy jsou navrženy tak, aby usnadnily paralelní zpracování dat, často s minimálními změnami kódu (parallelStream()).

Výhody:

  • Čitelnější a výstižnější kód pro složité operace s kolekcemi.
  • Snadné paralelizace.
  • Odstranění boilerplate kódu spojeného s iteracemi.
// Příklad: Filtrace a transformace seznamu řetězců
List<String> jmena = Arrays.asList("Alice", "Bob", "Charlie", "David");

List<Integer> delky = jmena.stream()
                            .filter(jmeno -> jmeno.startsWith("A")) // Mezistupně
                            .map(String::length)                   // Mezistupně
                            .collect(Collectors.toList());         // Terminální operace

// delky bude obsahovat [5]