Boa tarde!
Estou tentando comparar dois ArrayLists para excluir o que neles há em comum:
Ex:
Tenho uma classe pessoa com apenas um atributo (nome):
class Pessoa {
private String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
e no main preencho meus dois ArrayLists para compara-los e excluir o que for idêntico!
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class Main {
public static void main(String args[]) {
ArrayList<Pessoa> lista1 = new ArrayList<Pessoa>();
ArrayList<Pessoa> lista2 = new ArrayList<Pessoa>();
Pessoa pessoa = new Pessoa();
//colocando pessoas na lista1
pessoa.setNome("Sandro");
lista1.add(pessoa);
pessoa.setNome("Helder");
lista1.add( pessoa);
//colocando pessoas na lista2
pessoa.setNome("Sandro");
lista2.add(pessoa);
pessoa.setNome("Helder");
lista2.add(pessoa);
pessoa.setNome("Alisson");
lista2.add(pessoa);
lista1.removeAll(lista2); //quero que remova tudo que tem na lista 1 e na 2 ao mesmo tempo...
//só deveria restar Alisson...
//quando mando imprimir, realmente só resta alisson ele aparece repetido por 3 vezes...
//parece-me que o método removeAll deleta mas não diminui o tamanho do ArrayLyst
//e pior ainda, ele está duplicando o nome pra preencher os espaços vazios...
for (int a = 0; a < lista2.size(); a++) {
JOptionPane.showMessageDialog(null, "lista1.size(): " + lista2.size());
System.out.println(lista2.get(a).getNome());
}
}
O Resultado é:
Alisson
Alisson
Alisson
Então o método removeAll remove o que está igual nas listas mas não reduz o tamanho do array?
Alguém pode ajudar-me?