vamos la
existem 2 pontos que vc deve pensar
o primeiro é legibilidade. o codigo que vc escreveu esta legivel? as outras pessoas que trabalham com vc entendem isso?
não é só pq java permite que a gente tem que fazer. por ser uma API nova isso pode trazer confusão. veja se todo mundo envolvido entende e, se ficar confuso, faça algo ( desde adicionar um comentario, explica pra quem precisa ou num pior caso aborda pq isso pode ser fonte de confusão. escolha as batalhas que vc quer travar, trocar um for por uma api funcional pode não ser tão valioso assim )
o segundo é performance e isso vc pode testar usando alguma ferramenta de benchmark. se vc não sabe como usar, a hora é essa.
eu ainda tentaria comparar o stream com parallelStream
IMHO se a performance é irrelevante eu levo a questão de estilo: se eu tenho um codigo que ja tem ifs e loops encadeados, adicionar um stream + filter pode trazer uma quebra de estilo. a consequencia é que quem bate o olho precisa pensar um pouquinho a mais pra entender o que acontece e erros bobos podem ser mais dificeis de serem percebidos. o estilo de codificação é util pra que os olhos captem padrões.
eu bato o olho num metodo e ja sei se ele esta grande, mesmo não precisando contar o numero de linhas ou statements. e metodos grandes podem ser uma fonte de problema ( quem nunca pegou aquela classe de mil linhas não é mesmo ?).
enfim, algumas coisas que eu falei não são tecnicas.
é comum ao trabalhar com pessoas diferentes é termos abordagens diferentes. as vezes a galera briga por “ain deve ser classe abstrata e não interface” quando no fim é um belo tempo perdido. eu abro mão as vezes pq quero focar em outras coisas: se realmente for um problema isso vai ficar obvio em algum momento.
se vc tem uma boa suite de testes, vc pode substituir um loop por uma api funcional com stream e vai continuar funcionando.
meus conselhos:
- veja se este loop realmente precisa de alguma otimização ( como uma busca em paralelo ). talvez o seu gargalo nem esteja ai.
- se o codigo ja existe e funciona, deixe como esta. as vezes mudanças banais tornam um debug algo bem mais dificil de ser feito.
alias eis um bom problema: tente debuggar as duas formas. em qual vc se sente mais confortavel?
como colocar um breakpoint dentro do filter?
reflita. e mete bronca