Streamy sú nesmierne mocný nástroj na spracovanie dát. Keď som sa s tým prvý krát oboznámil, tak som bol nadšený.
Vzbudilo to tiež vo mne hlbší záujem o funkcionálne programovanie. Jazyk Python tieť nie je primárne fukcionálny jazyk, ale má svoje list comprehensions, ktoré sú veľmi efektívne pri práci s dátami.
Vezmime si nasledujúci kód:
int[] vals = { -4, 3, 5, 5, 7, -9, 0, 0, 12, 15, 11, -5, 2, 1, 7 };
Arrays.sort(vals);
System.out.println(Arrays.toString(vals));
Má jeden veľmi nepríjemný side effect, a to je in-place sorting dát. Čo je ale nemusí byť to, čo potrebujem.
Funkcionálne programovanie nás takýchto side-effektov ušetrí.
int[] vals = { 199, 199, 199, 199, -4, 3, 5, 5, 7, -9, 0, 0, 12, 15, 11, -5, 2, 1, 7 };
Arrays.stream(vals).skip(4).distinct().filter(e -> e > 0).map(e -> e * 2)
.filter(e -> e < 25).forEach(System.out::println);
Koľko smyčiek budeme potrebovať, aby sme toto spravili bez streamov?