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()amap(), jsou mezistupně. Neprovádějí se, dokud není volána terminální operace, napříkladcollect()neboforEach(). 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]