Remover objetos de um java.util.List passando uma collection!

5 respostas
dahenz

Boa tarde!!

Gostaria de saber como faço para remover vários objetos de um list passando outro list do mesmo tipo de objetos?

Tentei utilizar o método removeAll, mas seu retorno é apenas booleano!!!

Alguém tem uma dica?

Obrigado…

5 Respostas

Lavieri

o retorno é um boolean sim… que indica c houve alteração na lista ou não…

porem a remoção é feita na lista, independente do retorno…

Ps.: se equals e hashCode do seu objeto não tiver corretamente implementado a remoção pode falhar

dahenz

Humm… acredito que seja a implementação do meu equals ou hashCode… você teria um exemplo dessa implementação?

Obrigado Lavieri…

Lavieri

dahenz:
Humm… acredito que seja a implementação do meu equals ou hashCode… você teria um exemplo dessa implementação?

Obrigado Lavieri…

sim!

leia tb

c vc usa NETBEANS… aperte ALT + INSERT … e escolha “hashCode e equals …”

ai na tela, escolha os campos que torna um objeto seu unico, que ele monta pra vc

dahenz

Tentei implementar desta forma:

boolean boo = objetosDisponiveis.remove(objetosDisponiveis.equals(objetosVinculados));

Continua retornando false;

Devo comparar o conteúdo do list?

Obrigado…

Lavieri

dahenz:
Tentei implementar desta forma:

boolean boo = objetosDisponiveis.remove(objetosDisponiveis.equals(objetosVinculados));

Continua retornando false;

Devo comparar o conteúdo do list?

Obrigado…

não não… vc não entendeu… entre nos links, leia o que fala sobre Collections, e sobre equals e hashcode…

vou dar uma breve introdução… unico modo de testar igualdade entre objetos em java é usando object.equals(other); sendo assim é necessario implementar equals em todos os objetos…

hashCode é usado para não igualdade, pq se 2 objetos tem hashCode distintos, isso quer dizer que os objetos são diferentes… porem nem todo objeto com mesmo hashCode é igual…

Coleções usam esses 2 artificios para remover objets, e para verificar c contem…

sendo assim…

suaColecao.removeAll(outraColeacao);

vai fazer uso de equals, para verificar se existem objetos la dentro, e existindo vai removelos… c vc não implementa equals e hashCode, suas collections não funciona…

novamente… leia


assim, implemente o hashCode e o equals corretamente nos seus objetos, e depois use suas collections

Criado 24 de março de 2009
Ultima resposta 24 de mar. de 2009
Respostas 5
Participantes 2