Como compara dois ArrayList?

9 respostas
E

oi pessoal,

Estou tentando compara o conteúdo de arrayList, mas quando o lado umalistaPaga.get(e).getIdCreditoaux() fica null e da erro.
como faço pra mesmo que o lado direito de null ele continui preenchendo o conteúdo até que os dois arrayList fique null.

código:

if(umalista.get(e).getIdCredito()!= umalistaPaga.get(e).getIdCreditoaux()){
       preenche
}

erroooo

obrigado pela ajuda…

9 Respostas

joede.fadel

utilize o equals

if(umalista.get(e).getIdCredito().equals(umalistaPaga.get(e).getIdCreditoaux())){ preenche }

Felagund
if(umalista != null && umalista.get(e).getIdCredito().equals(umalistaPaga.get(e).getIdCreditoaux())){ 
//Seu codigo
}

Assim vc evita Nullpointer, que deve ser o erro que esta dando.

[]'s

E

obrigados colegas, vou tenta aqui depois mando resposta.

E

Obrigado pelas dicas mas não esta chegando ao meu objetivo.

A ideia é pega dois resultdo que vem com arrayList e comparo os dois :

1 - “umalista - retorna lista de credito que o cliente tem a receber.”

2 - "umalistaPaga - retorna credito pagos no mês atual "

Problema: Quando umalista é comparada umalistaPaga que retorna null ele sai do laço e não termina a tarefa.

Tarefa: seria compara os pagos e mostra só os credito que não foram pago.

if(umalista.get(e).getIdCredito()!= umalistaPaga.get(e).getIdCreditoaux()){  
       preenche  
}  
  
erroooo 
}
renzonuccitelli

Se vc já tem a lista dos já pagos, vc poderia fazer assim:

List listaPgtoPendetes=listaPgto.removeAll(ListaPgtoEfetuados);

As listas contem vários método para fazer operações entre conjuntos, como diferenca (removeAll e remove), pertinencia (contain), Contido( containAll) entre outras. Sempre que precisar de opeações entre conjuntos, de uma lida na API, ou até mesmo pelo JavaDoc dá pra saber sobre os métodos, caso esteja utilizando uma IDE.

E

Oi amigo,

Tentei usar este método mas pede tipo booleam:

List listaPgtoPendetes=listaPgto.removeAll(ListaPgtoEfetuados);

IDE que uso e Eclipse Ganymede.

mais : umalistaPaga - > Retorna a lista paga .
umalista -> Retorna a lista a receber.

mas quando boto neste metodo ele pede:

"booleam"  listaPgtoPendetes=listaPgto.removeAll(ListaPgtoEfetuados);

mas eu quero compara e separa os id que não foi pao

Obrigado Cara…

O

dica: teste listaPgto depois da chamada de listaPgto.removeAll(ListaPgtoEfetuados); E sempre que achar que um método não tá fazendo o que você intuiu que ele faria, leia a documentação. O próprio eclipse já ajuda. :wink:

Lavieri

os métodos… removeAll e retainAll … remove … contains… entre outros… só funcionam corretamente se os seus objetos implementarem corretamente equals(Object o) e hashCode()

o objeto que popula essa sua lista não tem esses 2 métodos implementados corretamente… assim quando vc faz

lista1.removeAll(lista2) … na hora de checar se são igauis … com equals, ele não consegue verificar e assim acaba não removendo nada…

outra coisa é, que para ser mais rapido, antes de testar o equals, as listas fazem um teste de hashCode, e se os hashCode forem diferentes ele já discarta o objeto, sem nem testar o equals…

leia esse artigo => http://sergiotaborda.wordpress.com/java/igualdade-em-java/
e implemente corretamente no objeto que compoem a sua lista, tanto o equals como o hashCode …

E

Estava sem tempo de estuda java, mas tentei usar removell… mas não funcionou

List  naopagos = lista1.removeAll(lista2);

obrigado a todos pelas dicas… mas vou pesquesa na net novamente pra ver se acho uma solução pra meu sistema.

Criado 29 de março de 2009
Ultima resposta 5 de abr. de 2009
Respostas 9
Participantes 6