Comparar ArrayList de Objetos!

Galera, estou tentando fazer um algoritmo para isto, mas não estou conseguindo.

O que tenho é dois ArrayList de Objetos, com valores diferentes porém com um id em comum, o que eu queria era comparar estes dois ID e extrair para um terceiro array SOMENTE os valores que estão no Array1 mas não estão no Array2.

Exemplo
No 1º ArrayList tenho os objetos com os seguintes ID’s
1
2
3
4
5

E no 2ºArrayList tenho os objetos com os seguintes ID’s
4
2

Eu queria passar para um terceiro Array os seguintes valores
1
3
5
(Que estão no Array 1, Mas não estão no 2);

Os arraylist são de um mesmo objeto, porém estão com valores diferentes, somente o Id que coincide.
Ou seja não tem como comparar o objeto inteiro, tem que comparar o atributo que está dentro de cada um deles!

Obrigada!

Basta usar o método removeAll.

List<Integer> list3 = new ArrayList<Integer>(list1); list3.removeAll(list2);

Para que isso funcione, sua classe deve ter o equals implementado corretamente.

A dica do Vinícius é a mais simples, mas caso você precise fazer na mão (exercício???), o algoritmo seria esse:

1 - Crie um ArrayList que vai conter os objetos que você quer armazenar.
2 - Itere pelo primeiro ArrayList.
3 - Durante a iteração do primeiro ArrayList, itere pelo segundo ArrayList, ou seja, um for dentro de outro.
4 - Verifique: o id do objeto corrente da iteração do ArrayList 1 tem o mesmo valor do id do objeto corrente da iteração do ArrayList 2?
5 - Se sim, insira o objeto do ArrayList 1 ou do ArrayList 2 no terceiro ArrayList e dê um break no for mais interno, afinal, vc já achou o que procurava.

Esse é o algoritmo mais burrinho. Vc pode usar a API de List para simplificá-lo, ou então fazer como o Vinícius disse caso não precise fazer na raça.

No final da execução dos dois fors você vai ter então o terceiro ArrayList preenchido com os objetos desejados.
Se os objetos que você está usando são diferenciados somente pelo id (o que é muito provável), recomento que você implemente o método equals como o Vinícius falou. Assim seu código fica mais genérico.

[]´s

Devo implementar o método equal nas duas classes??

Cada ArrayList contém tipos de objetos diferentes?
Se sim, o equals não vai adiantar nada, pq vc deveria compar objetos do mesmo tipo com ele.

[]´s

Ops, me atrapalhei… rsrs

Desculpe-me!

Então são do mesmo objeto… Estou desenvolvendo uma aplicação web… Meu método equal ficaria dentro da servlet??

Dentro da classe dos objetos que estão sendo instanciados.

Obrigado pela ajuda, davidbuzatto e ViniGodoy !

Vou tentar resolver meu problema mais tarde e qualquer coisa retorno aqui!

(: