Problema incomum com hashset  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
caiozanchetti
JavaBaby
[Avatar]

Membro desde: 27/10/2004 00:17:24
Mensagens: 90
Offline

Ola pessoal...

Quando criamos o seguinte tipo de codigo:
Integer i1 = new Integer(1);
Integer i2 = new Integer(1);



e


Obtemos como resultado true no println e no segundo trecho obtem-se um hashset com um elemento.

Os resultados são bem evidentes em função da maneira como a classe Integer trata o equals e a classe HashSet trata o add.

Porem se eu tiver as classes Objeto1, Objeto2 e Objeto3 como segue, verão que teremos problemas com o hashset, porque este irá adicionar os objetos que devem ser iguais.



Só pra lembrar: A classe HashSet não aceita um novo elemento se este já existir (comparação feita atraves do metodo equals).

Obrigado.
[MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Um hashset usa "hashCode", depois é que usa "equals". Você não sobreescreveu o método "hashCode". A implementação default de hashCode é a de Object, que retorna valores diferentes para objetos diferentes (mesmo que as suas variáveis de instância tenham valores iguais.)

Dica: Leia o Effective Java - lá o sr. Joshua Bloch manda você repetir 7 vezes por dia, de preferência ajoelhado e na direção de onde o sr. James Gosling estiver: "Quando implementar equals, implemente hashCode e vice-versa."

Dica 2: Um "hashset" não tem esse nome à toa. Você deveria ter desconfiado.
[WWW]
caiozanchetti
JavaBaby
[Avatar]

Membro desde: 27/10/2004 00:17:24
Mensagens: 90
Offline

foi mal... eu esqueci completamente disso... no livro da katy tb tem essa questão MUITO bem abortada...
falhei...
[MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team