Sobes.tech
Junior — Middle

É possível que dois objetos considerados diferentes por equals tenham o mesmo valor de hashCode?

sobes.tech IA

Resposta da IA

Sim, é possível. Em Java, o contrato dos métodos equals() e hashCode() exige que, se dois objetos forem iguais segundo equals(), eles devem ter o mesmo hashCode(). Mas o inverso não é obrigatório: dois objetos com o mesmo hashCode() podem não ser iguais segundo equals().

Isto deve-se ao fato de que hashCode() retorna um valor inteiro de tamanho fixo, e objetos diferentes podem ter colisões — o mesmo hash.

Por exemplo, em coleções como HashMap ou HashSet, primeiro compara-se o hashCode(), e depois usa-se equals() para determinar se os objetos são exatamente iguais.