Opa pessoal tudo bem?, estou tentando passar esse for para lambda mas não estou conseguindo, alguem consegue me auxiliar? é que o lambda ainda não ficou claro na minha mente.
if(!treatment.getEmails().isEmpty()){
for(EmailTreatment emailTreatment: treatment.getEmails()){
if(emailTreatment.getEmail().equals(email.getEmail())){
throw new EmailTreatmentException();
}
}
}
Consegui! segue resposta caso alguém precise
if(!treatment.getEmails().isEmpty()) treatment.getEmails().stream().forEach(i → { if(i.getEmail().equals(email.getEmail())) throw new EmailTreatmentException();});
1 curtida
Oi @natanmedeiros099
Você conseguiu usar lambda no código mas não teve muita vantagem nesse caso. Há algumas coisas estranhas no seu código que poderiam ser melhoradas:
- Não é preciso testar se uma lista é vazia antes de iterar nela.
- A variável email ter um método
getEmail()
é bem confuso
- Chamar
.stream()
numa lista e depois chamar .forEach
não é necessário. Pode chamar .forEach
direto na lista
Isso são coisas mais básicas pra consertar. A melhoria mais importante é que você não precisa fazer um forEach + if
para procurar um elemento numa lista.
Se entendi a lógica, se dentro de treament.getEmails()
tiver o email email.getEmail()
você quer lançar uma exceção certo?
Dá pra utilizar os métodos da api stream pra isso:
if (treaments.getEmails().stream().anyMatch(e -> e.equals(email.getEmail()))) {
throw new EmailTreatmentException();
}
2 curtidas