Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Bug] Todas alternativas estão erradas

Não tem como fazer duas operações finais no mesmo stream, e .findFirst() e .collect() são duas operações finais. E todas as alternativas do exercício estão erradas nesse sentido.

Acredito que o certo seria fazer algo do tipo

transacoes.stream()
 .filter(t -> t.getValor() > 5000)
 .peek(System.out::println)
 .collect(Collectors.toSet()).stream()
 .findFirst();
4 respostas

Olá, Gabriel! Tudo bem com você?

Você está correto em afirmar que não podemos realizar duas operações finais no mesmo stream. No entanto, o código da alternativa A não está realizando duas operações finais no mesmo stream.

Aqui está o que está acontecendo na alternativa A:

transacoes.stream()
 .filter(t -> t.getValor() > 5000)
 .peek(System.out::println)
 .collect(Collectors.toSet())
 .findFirst();

Primeiro, um stream é criado a partir da lista de transações. Em seguida, esse stream é filtrado para incluir apenas transações com valor superior a 5000. As transações que passam pelo filtro são então impressas no console com o método peek().

A operação final .collect(Collectors.toSet()) é aplicada ao stream, transformando-o em um Set. Observe que, após essa operação, não estamos mais trabalhando com um stream, mas sim com um Set.

Finalmente, o método .findFirst() é chamado no Set, não no stream. Portanto, não estamos tentando realizar duas operações finais no mesmo stream.

Espero que essa explicação tenha esclarecido suas dúvidas.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Oi, Armano! Estou bem e espero o mesmo de você!

Ainda assim continua errado, porque a interface Set não tem nenhum método chamado .findFirst()

Fiz um teste rápido até mesmo o IntelliJ indica começar outro stream() para que o método .findFirst() possa ser usado

Segue a imagem:

indicações pelo IntelliJ

solução!

Boa tarde, Gabriel! Peço desculpa pela demora em respondê-lo.

Peço desculpa pela minha confusão anterior, com base nesse teste que você compartilhou realizou um parecido e realmente ocorre essa mesma situação. Com isso, entrei em contato com pessoal responsável pelo conteúdo para ajustar a atividade.

No mais, fico à disposição no caso de dúvidas.

Bons estudos!

Perfeito, obrigado!