Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

contains() e equals()

Oi gente,

só para confirmar mesmo: o método contains() da classe ArrayList chama o método equals() da classe Object, que compara as referências e retorna V ou F. Então no caso de duas referências serem inicializadas com objetos que possuem os mesmo valores, o método equals da calsse Object não irá detectar que se trata de objetos idênticos. Assim, para que isso aconteça ele deve ser sobrescrito na classe mais específica (como foi o exemplo dado com a classe Conta), certo?

3 respostas
solução!

Boa tarde Irene,

Isso mesmo, o equals é utilizado para comparações, caso a gente não sobrescreva, será comparada utilizando o que é implementado na Object que é a classe mãe de todos os objetos, que irá comparar pelo hash gerado, caso a gente sobrescreva, ele irá utilizar a nossa implementação para verificar a igualdade.

Lembre-se de um detalhe muito importante, sempre que sobrescrever o equals, sobrescreva tambem o hashCode, caso você esqueça de sobrescrever o hashCode você estará violando o contrato geral para o hashCodee não funcionará corretamente em coleções como HashMap e HashSet.

Espero que tenha ficado claro, qualquer coisa estou a disposição :)

Oie Irene, tudo bem contigo?

É exatamente como você disse!

O equals da classe Object possui uma lógica própria, por isso se queremos usa-lo em nossos códigos de uma maneira diferente temos que sobrescrever a lógica do equals. E no caso do exemplo do instrutor, o equals foi sobrescrito na classe Conta, assim quando usamos o método contains da lista, ele usa o equals que nós alteramos.

Um detalhe importante é que o contains usado nas listas é diferente do contains que encontramos na classe String por exemplo. O usado nas listas serve para verificar se uma lista possui determinado valor, o usado na classe String serve para verificar se ela possui determinada sequência de caracteres.

Espero ter ajudado!

Se tiver qualquer outra dúvida estarei por aqui :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

Muito obrigada Gabriel e Igor =D

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software