1 O que é peek?
O método peek permite visualizar a execução do pipeline, executando uma ação a cada elemento processado.
Ele não força a execução do Stream, pois é uma operação intermediária.
2 Exemplo de uso do peek
usuarios.stream()
.filter(u -> u.getPontos() > 100)
.peek(System.out::println)
.findAny();
O peek imprime apenas até encontrar um usuário com mais de 100 pontos, demonstrando o efeito do lazy evaluation.
3 peek vs forEach
forEach é uma operação terminal e força a execução do Stream.
peek é intermediário, então o código abaixo não imprime nada, pois não há operação terminal:
usuarios.stream()
.filter(u -> u.getPontos() > 100)
.peek(System.out::println); // Nenhuma saída
4 peek com sorted e operações stateful
Se usado com sorted, o peek imprime todos os usuários antes de findAny:
usuarios.stream()
.sorted(Comparator.comparing(Usuario::getNome))
.peek(System.out::println)
.findAny();
Isso acontece porque sorted é uma operação intermediária stateful, que pode precisar processar toda a lista antes de produzir um resultado.
Exemplo: ExemploPeek.java
Top comments (0)