Sobes.tech
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.