Eu preciso saber exatamente como trabalha este metodo, por qual atributo ele mede a equivalencia dos objetos, por exemplo!
se eu comparar duas listas e elas tiverem mesmo tamanho, mas Objetos diferentes, ou até valores de atributos diferentes ele vai captar?
Vlw pela ajuda galera?
[EDIT]
Fiz o seguinte teste
List a = new ArrayList();
List b = new ArrayList();
Pessoa p = new Pessoa("a");
Pessoa o = new Pessoa("b");
Pessoa w = new Pessoa("c");
Pessoa y = new Pessoa("d");
a.add(p);
b.add(o);
a.add(w);
b.add(y);
if(a.equals(b)){
System.out.println("Naum pega atr dif");
}
else{
System.out.println("pega atr dif");
}
e mesmo com a inicialização do construtor igual ou diferente ele cai no else, por que?
Isso vai depender de como você implementou o equals da classe Pessoa.
Se vc não implementou nada, ele compara pelo endereço de memória. Portanto, mesmo duas pessoas de atributos idênticos, se forem objetos distintos, serão considerados diferentes.
Se você implementar um equals diferente, você pode dar uma definição de igualdade diferente. Por exemplo, vc pode considerar que pessoas de ID igual são iguais, ou comparar atributo por atributo, fica a teu cargo.
Gostei dessa solução. Entretanto se a ListaA tiver elementos repetidos esse método ira falhar. Mas é facil alterar para que veja o tamanho antes e depois da list.
Ué, irá falhar pq? Como ambas as listas são copiadas para um set, não existirá duplicatas.
Como eu falei, esse método só testa se ambos os elementos estão presentes nas duas listas. Sem se preocupar em quantas vezes aparecem, ou com ordem.[/quote]
É, verdade, voce avisou que desconsideraria isso.
Eu considerei que uma lista com 3 objetos iguais seria diferente de outra lista que só tem 1.
E pra esse caso é só alterar para ver o tamanho.
[quote=Mark_Ameba]
Eu considerei que uma lista com 3 objetos iguais seria diferente de outra lista que só tem 1.
E pra esse caso é só alterar para ver o tamanho.[/quote]
Não exactamente. AAB e ABB teriam o mesmo tamanho (3), os mesmos elementos (A e B) e seriam diferentes
[quote=pmlm][quote=Mark_Ameba]
Eu considerei que uma lista com 3 objetos iguais seria diferente de outra lista que só tem 1.
E pra esse caso é só alterar para ver o tamanho.[/quote]
Não exactamente. AAB e ABB teriam o mesmo tamanho (3), os mesmos elementos (A e B) e seriam diferentes[/quote]
Isso que eu quis dizer, no Set voce teria duas list uma com A/B e outra com A/B também, mesmo sendo diferentes.