Versão atual:

hashCode() e equals() - porque devo sobrescrever os dois?

Estou estudando a fundo sobre a API Collections do Java, e em relação a implementação HashSet me surgiu uma dúvida em relação ao seu funcionamento interno, por exemplo:

Se eu tenho uma classe Conta com os atributos código, titular e saldo, e eu for colocar as instancias desta classe dentro de um HashSet, para que ele saiba definir se os métodos são iguais, eu devo sobrescrever os métodos hashCode() e equals(), levando em consideração o atributo código, por exemplo.

Agora, porque eu devo sobrescrever o hashCode()? Uma vez que o equals() já não seria o suficiente para definir se o meu objeto é igual ou não a outro que há nesta lista?

Se eu remover o método o hashCode() e deixar só o equals, ele permite que haja repetição no meu HashSet, porque ele não consegue comparar se o objeto já existe, uma vez que está definido o método equals()?

Alguém sabe porque isso acontece?

Versão(1):

Ver a versão formatada

hashCode() e equals() - porque devo sobrescrever os dois?

  • criado 28 de dez de 2014

Comentário

new question