PROBLEMAS COM: Set<String> identificadores = new HashSet<String>();

Galera, bom dia.
Peço ajuda de vcs com este problema.
Desde já agradeço por sua atenção.

Tenho este método para pegar os dados do banco e apresentá-los em um jTable(contas à pagar). No caso específico deste método é para ele retornar uma lista somente com as despesas que ainda não foram pagas. Acontece que foi criado um objeto Set<String> identificadores = new HashSet<String>();, para selecionar esses dados, mas na hora dos
dados serem removidos identificadores.remove(PagamentoDespesas_CRUD.pagDesp.get(a).getNomeDespesaPaga());, não os são removidos completamente como deveriam ser, algumas contas que já foram pagas permanecem como não sendo pagas.
OBS.: o array pagDesp, contém todas as despesas pagas, porém as que estão contidas no array e são iguais as do identificador não são removidas completamente, sempre ficam uma ou duas despesas que já foram pagas, na hora que são apresentadas no jTable(contas à pagar).

[code]public List listar_dados3() {

 List<DespesasFixas_model> lista = new ArrayList<DespesasFixas_model>();

  try{
      co.conectar();
      PreparedStatement stmt = co.con.prepareStatement(
            "SELECT * FROM despesasfixas");

    ResultSet rs = stmt.executeQuery();

    while (rs.next()) {


      DespesasFixas_model d = new DespesasFixas_model();

      d.setIdDespfx(rs.getInt("idDespfx"));
      d.setNomeDespesa(rs.getString("nomeDesp"));
      d.setValorDespesa(rs.getDouble("valordesp"));
      d.setDataDespesa(rs.getDate("datadesp"));
      d.setDataVencDespesa(rs.getDate("datavenc"));
      
      despFixas.add(d);

   }


      //criar um Set com o identificador

Set identificadores = new HashSet();
for(int i=0; i<despFixas.size();i++){
identificadores.add(despFixas.get(i).getNomeDespesa());
}

//agora remove todos os que pagou
for(int a=0; a<PagamentoDespesas_CRUD.pagDesp.size();a++){

                 identificadores.remove(PagamentoDespesas_CRUD.pagDesp.get(a).getNomeDespesaPaga());

}

//neste momento o set identificadores contém os identificadores de todas as despesas que faltam pagar.
for(int i=0; i<despFixas.size();i++){

              //este metodo contains()retorna true se o elemento especificado for encontrado
            if(identificadores.contains(despFixas.get(i).getNomeDespesa())){
                
                 DespesasFixas_model df1 = new DespesasFixas_model();

                          df1.setIdDespfx(despFixas.get(i).getIdDespfx());
                          df1.setNomeDespesa(despFixas.get(i).getNomeDespesa());
                          df1.setValorDespesa(despFixas.get(i).getValorDespesa());
                          df1.setDataDespesa(despFixas.get(i).getDataDespesa());
                          df1.setDataVencDespesa(despFixas.get(i).getDataVencDespesa());


                         lista.add(df1);
                          
            }
             }



           
    stmt.close();
      
  }catch(SQLException e){
        JOptionPane.showMessageDialog(null, "ERRO..."+e.getMessage(), "Consulta de Despesas Fixas", 0);
  }
  return lista;
}

}[/code]

Bom dia!

vamos ver ser consigo te ajudar.

primeiro uma observação suas despesas tem um “IdDespfx” porque não usar ele ao invés de usar “NomeDespesa”?

aqui:

 for(int i=0; i<despFixas.size();i++){  
          identificadores.add(despFixas.get(i).getNomeDespesa());  
  }  

você está usando NomeDespesa para adicionar no set identificadores

e aqui:

//agora remove todos os que pagou  
  for(int a=0; a<PagamentoDespesas_CRUD.pagDesp.size();a++){  
        
                     identificadores.remove(PagamentoDespesas_CRUD.pagDesp.get(a).getNomeDespesaPaga());  
  
  }  

vc usa o getNomeDespesaPaga() para remove-los da lista vc tem certeza que a String do NomeDespesa é igual ao getNomeDespesaPaga

se ou ver espaços na string ele não irá remover do set por isso seria melhor usar o IdDespfx que é um int