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

.stream()

Boa tarde!

Eu queria saber qual é a diferença entre usar produtos.stream.forEach() e diretamente produtos.forEach(). Poderiam me ajudar?

2 respostas
solução!

Opa Fellipe, tudo certo?

Então uma vem da api de Streams e a outra faz parte da interface Iterable ambas foram adicionadas no java 8 e na real, elas possuem basicamente o mesmo comportamento, temos algumas diferenças sutis, que podemos analisar:

.stream ().forEach ().forEach()
.stream().forEach() também é usado para iterar a coleção, mas primeiro transforma a coleção para um Stream e depois itera sobre essa Stream..forEach () usa o iterador de coleções padrão.
Ao contrário do .forEach (), ele não executa em nenhuma ordem específica, ou seja, a ordem não é definida.Executa sempre na ordem de iteração, se houver uma especificada.
Durante a modificação da estrutura na coleção, a exceção será lançada posteriormente.Se realizarmos qualquer modificação estrutural na coleção usando o .forEach (), sera lançada imediatamente uma exceção.
Se a iteração estiver acontecendo na coleção sincronizada, ela não bloqueará a coleção.Se a iteração estiver acontecendo na coleção sincronizada, ela bloqueará a coleção e a manterá em todas as chamadas.

Na maioria dos casos, isso acaba não fazendo tanta diferença no dia a dia, mas é sempre bom buscar entender a diferença real, muito boa pergunta Fellipe.

Qualquer duvida pode mandar, espero ter conseguido esclarecer um pouco :)

Muito obrigado pela explicação, Gabriel. Ajudou demais e explicou muito bem!