Pesquisa em dois ArrayList [RESOLVIDO]

Boa noite galera!!!
Estou com um problema que é o seguinte:

[list] insiro três despesas no ArrayList despesasFixas[];[/list]
 [list]insiro dois pagamentos de despesas no ArrayList pagamento[];[/list]
 [list]comparando os dois ArrayList, quero inserir em um terceiro ArrayList contasPagar[], somente as despesas que faltaram serem pagas, e não consigo.[/list]

Quando insiro somente um pagamento da certo, qdo mais de um pagamento não da certo.

Desde já agradeço pela atenção, de quem puder me ajudar.

        [code]String nomeDespPaga = null;
                 String nomeDesp = null;                      

                 for(int i=0; i<despFixas.size();i++){                    
                   nomeDesp=despFixas.get(i).getNomeDespesa();
                   
                   for(int a=0; a<PagamentoDespesas_CRUD.pagamento.size();a++){
                       nomeDespPaga= PagamentoDespesas_CRUD.pagamento.get(a).getNomeDespesaPaga();
                  

                       if(!nomeDesp.equals(nomeDespPaga) ){

                          DespesasFixas df1 = new DespesasFixas();

                          df1.setCodDespesa(despFixas.get(i).getCodDespesa());
                          df1.setDataDespesa(despFixas.get(i).getDataDespesa());
                          df1.setDataVencDespesa(despFixas.get(i).getDataVencDespesa());
                          df1.setNomeDespesa(despFixas.get(i).getNomeDespesa());
                          df1.setQuantParcelaPaga(despFixas.get(i).getQuantParcelaPaga());
                          df1.setQuantParcelaPagar(despFixas.get(i).getQuantParcelaPagar());
                          df1.setValorDespesa(despFixas.get(i).getValorDespesa());


                           contasPagar.add(df1);
                           
                      
         
                    }
                  
                  }

                }[/code]

[quote=reco162]Boa noite galera!!!
Estou com um problema que é o seguinte:

[list] insiro três despesas no ArrayList despesasFixas[];[/list]
 [list]insiro dois pagamentos de despesas no ArrayList pagamento[];[/list]
 [list]comparando os dois ArrayList, quero inserir em um terceiro ArrayList contasPagar[], somente as despesas que faltaram serem pagas, e não consigo.[/list]

Quando insiro somente um pagamento da certo, qdo mais de um pagamento não da certo.

Desde já agradeço pela atenção, de quem puder me ajudar.

        [code]String nomeDespPaga = null;
                 String nomeDesp = null;                      

                 for(int i=0; i<despFixas.size();i++){                    
                   nomeDesp=despFixas.get(i).getNomeDespesa();
                   
                   for(int a=0; a<PagamentoDespesas_CRUD.pagamento.size();a++){
                       nomeDespPaga= PagamentoDespesas_CRUD.pagamento.get(a).getNomeDespesaPaga();
                  

                       if(!nomeDesp.equals(nomeDespPaga) ){

                          DespesasFixas df1 = new DespesasFixas();

                          df1.setCodDespesa(despFixas.get(i).getCodDespesa());
                          df1.setDataDespesa(despFixas.get(i).getDataDespesa());
                          df1.setDataVencDespesa(despFixas.get(i).getDataVencDespesa());
                          df1.setNomeDespesa(despFixas.get(i).getNomeDespesa());
                          df1.setQuantParcelaPaga(despFixas.get(i).getQuantParcelaPaga());
                          df1.setQuantParcelaPagar(despFixas.get(i).getQuantParcelaPagar());
                          df1.setValorDespesa(despFixas.get(i).getValorDespesa());


                           contasPagar.add(df1);
                           
                      
         
                    }
                  
                  }

                }[/code]  

[/quote]

Vc precisa de um identificador melhor que o nome da despesa, mas usando isso e assumindo que isso é um identificador …

O processo é simples. Vc precia registrar o que ha a pagar e remover o que pagou. Se usar os identificadores fica fácil. Ficariam mais fácil se os objetos nas duas listas fossem o mesmo, mas como não são eis uma opção


// criar um Set com o identificador 

Set<String> 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.pagamento.size();a++){
                     identificador.remove(pagamento.get(a).getNomeDespesaPaga());
  }

//neste momento o set identificadores contém os identificadores de todas as despesas que faltam pagar.

Algumas diretrizes:
desconfie de for dentro de for. Substitua pelo uso de Map ou Set
Use numeros inteiros sem significado como identificadores. Duas despesas podem ser diferentes e ter o mesmo nome
Preocupe-se com a nomenclatura que usa. Use i,j,k para indices de for ( ou menor ainda use o for extendido ). Não use _ nos nomes.

 Sergio valeu pela dica, mas estou usando java 6.9 e ao tentar implementar este código que vc me enviou, deu erro nesta linha: 

Set identificadores = new HashSet<>();

   diamond operator is not supported in -source 1.5
   (use -source 7 or higher to enable diamond operator)

Troque por isso:

Set<String> identificadores = new HashSet<String>(); 

[quote=regis_hideki]Troque por isso:

Set<String> identificadores = new HashSet<String>(); [/quote]