Junior — Middle
Môžete vysvetliť, ako funguje metóda peek() v Java Stream API a v akých situáciách sa používa?
sobes.tech AI
Odpoveď od AI
Metóda peek() v Java Stream API sa využíva na medzičasťný pohľad na prvky toku bez zmeny samotného toku. Prijíma Consumer — funkciu, ktorá vykonáva nejakú akciu s každým prvkom, napríklad logovanie alebo ladenie.
Dôležité: peek() nemení prvky a nie je terminálnou operáciou, takže na jej vykonanie musí byť tok "spustený" terminálnou operáciou (napríklad collect(), forEach()).
Príklad použitia:
List<String> mená = Arrays.asList("Anna", "Bob", "Charlie");
List<String> filtrované = mená.stream()
.filter(meno -> meno.length() > 3)
.peek(meno -> System.out.println("Filtrovaná hodnota: " + meno))
.collect(Collectors.toList());
Tu peek() vypisuje filtrované mená na ladenie, neovplyvňujúc výsledok.
Zvyčajne sa peek() používa na:
- Ladenie reťazcov Stream
- Logovanie medzi hodnotami
- Vykonávanie vedľajších efektov bez zmeny dát
Avšak, nemal by sa používať peek() na zmenu stavu alebo dát, pretože to odporuje funkčnému štýlu a môže viesť k nepredvídateľným výsledkom.