Rozhranie API Java 8 Streams peek ()
1. Úvod
Rozhranie Java Stream API nám predstavuje výkonnú alternatívu spracovania údajov.
V tomto krátkom návode sa zameriame na nahliadnuť (), často nepochopená metóda.
2. Rýchly príklad
Zašpiníme si ruky a skúsme to využiť nahliadnuť (). Máme prúd mien a chceme ich vytlačiť na konzolu.
Odkedy nahliadnuť () očakáva a Spotrebiteľ ako jediný argument sa javí ako vhodný, takže to skúsme:
Názov streamuStream = Stream.of ("Alice", "Bob", "Chuck"); nameStream.peek (System.out :: println);
Fragment vyššie však neprodukuje žiadny výstup. Aby sme pochopili prečo, urobme si krátku aktualizáciu o aspektoch životného cyklu streamu.
3. Medzistupňové vs.
Pripomeňme, že streamy majú tri časti: zdroj údajov, nulovú alebo viac prechodných operácií a nulovú alebo jednu terminálovú operáciu.
Zdroj poskytuje prvky potrubiu.
Prostredné operácie získavajú prvky jeden po druhom a spracovávajú ich. Všetky prechodné operácie sú lenivé a vo výsledku nebudú mať žiadne operácie žiadny efekt, kým nezačne pracovať ropovod.
Terminálové operácie znamenajú koniec životného cyklu toku. Najdôležitejšie pre náš scenár je, že zahájiť prácu v potrubí.
4. nahliadnuť () Využitie
Dôvod nahliadnuť () nefunguje v našom prvom príklade je to je to medziprodukt operáciu a neaplikovali sme a terminál prevádzka k potrubiu. Prípadne sme mohli použiť pre každý() rovnakým argumentom pre získanie požadovaného správania:
Názov streamuStream = Stream.of ("Alice", "Bob", "Chuck"); nameStream.forEach (System.out :: println);
nahliadnuť ()Stránka Javadoc hovorí: „Táto metóda existuje hlavne na podporu ladenia, kde chcete vidieť prvky, ktoré prúdia okolo určitého bodu v potrubí“.
Uvažujme o tomto úryvku z rovnakej stránky Javadoc:
Stream.of ("jeden", "dva", "tri", "štyri"). Filter (e -> e.length ()> 3) .peek (e -> System.out.println ("Filtrovaná hodnota: "+ e)) .map (String :: toUpperCase) .peek (e -> System.out.println (" Namapovaná hodnota: "+ e)) .collect (Collectors.toList ());
Ukazuje, ako pozorujeme prvky, ktoré prešli každou operáciou.
Na vrchu tamtoho, nahliadnuť () môžu byť užitočné v inom scenári: keď chceme zmeniť vnútorný stav prvku. Povedzme napríklad, že chceme pred vytlačením previesť meno používateľa na malé písmená:
Stream userStream = Stream.of (nový používateľ („Alice“), nový používateľ („Bob“), nový používateľ („Chuck“)); userStream.peek (u -> u.setName (u.getName (). toLowerCase ())) .forEach (System.out :: println);
Prípadne sme mohli použiť mapa (), ale nahliadnuť () je pohodlnejšie, pretože nechceme nahradiť prvok.
5. Záver
V tomto krátkom tutoriáli sme videli zhrnutie životného cyklu streamu, aby sme pochopili ako nahliadnuť () Tvorba. Pri používaní sme videli aj dva prípady každodenného použitia nahliadnuť () je najpriamejšou možnosťou.
A ako obvykle sú príklady k dispozícii na GitHub.