JavaPOOintermediario

equals() e hashCode()

Ao lidar com coleções como HashSet ou HashMap, a comparação correta de objetos é essencial para evitar duplicatas e garantir buscas eficientes. O método equals() define quando dois objetos devem ser tratados como iguais, e sua implementação inadequada pode causar bugs sutis e difíceis de detectar. Dominar a sobrescrita de equals() é fundamental para garantir que suas classes se comportem de forma previsível em estruturas de dados padrão do Java.

O PROBLEMA

Sobrescreva equals() em Produto para comparar por nome.

EXEMPLO

p1.equals(p2) → true (mesmo nome)

SOBRE O CONCEITO

O método equals() da classe Object compara referências, não conteúdo. Para comparar objetos pelo valor de seus atributos, precisamos sobrescrevê-lo. O erro comum é não verificar instanceof antes de fazer o cast: sem essa verificação, se o argumento for null ou de outro tipo, ocorrerá ClassCastException. A implementação correta deve: verificar se o objeto é do mesmo tipo com instanceof, converter o parâmetro, e então comparar o campo nome usando equals da String. Lembre-se de que equals() deve ser consistente com hashCode() segundo o contrato da linguagem, mas o foco aqui é apenas a comparação por nome.

RESOLUÇÃO

Mais exercícios de POO

JAP004 · BásicoMétodo com retornoJAP005 · BásicoMúltiplos objetosJAP011 · IntermediárioHerança simplesJAP002 · BásicoConstrutor
Ver todos os exercícios de Java