Validação de dados de e-mail

Estou tentando realizara validação das informações que recebi de um arquivo txt no meu método onde ele pega o valor total de outra classe e divide entre a quantidade de clientes que contém na lista. Por enquanto, eu consigo fazer a validação e mostrar uma mensagem de erro, mas não estou conseguindo excluir esse e-mail inválido do meu ArrayList para que não seja incluso junto com os e-mails válidos.

List<String> emailList = new ArrayList<>();
            try (BufferedReader buff = new BufferedReader(new FileReader("listadeemail.txt"))) {               
                while ((linhaEm = buff.readLine()) != null) {//lê e armazena os valores
                    emailList.add(linhaEm);
                }
              
                //validação de e-mail
                String regex = "^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^-]+(?:\\.[a-zA-Z0-9_!#$%&'*+/=?`{|}~^-]+)*@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$";
                Pattern pattern = Pattern.compile(regex);
                //Tamanho da lista de e-mails
                tamLista = emailList.size(); 
                //Divisão do valor da lista com a quantidade de e-mails
                total = (subtotal()/tamLista)/100;
                //Captura o resto da divisão
                restoTotal = (subtotal()%tamLista);
                System.out.println(total +" "+ restoTotal);
                
                for(String email: emailList) {
                   Matcher matcher = pattern.matcher(email);//validação e-mail
                    
                    if(matcher.matches() == true){
                    //Criação do Map para exibição de dicionário
                    Map<String, Integer> emailMap = new HashMap<>();
                    emailMap.put(email, total);
                    //Exibição dos dados com forEach utilizado em Java 8
                    emailMap.forEach((emailChave, totalValor) -> System.out.println("A pessoa: " + emailChave + " está devendo " + totalValor + " reais."));
                  
                       }else{
                       System.out.println("E-mail inválido!");
                       tamLista--;                     
                    }
                }
        }catch(FileNotFoundException e){//validação do arquivo
            System.out.println("Erro com o arquivo! Por favor, escolha um arquivo diferente.");
        }

Estava tentando fazer com o remove() e ele dava erro no e-mail inválido e não terminava de percorrer a lista

Não é recomendado remover um item de uma lista dentro de um loop na própria lista. Isso pq o loop pode se perder, pois a lista a ser percorrida é alterada em tempo de execução.

Em vez de usar um remove, vc pode criar uma lista separada para armazenar os emails válidos e ir adicionando nela.

List<String> emailsValidos = new ArrayList<>();

for(String email: emailList) {
  if (/*email é válido*/) {
    emailsValidos.add(email);
  }
}
1 curtida

Entendi!!

Obrigada! Ajudou bastante, eu consegui resolver dessa forma!