Middle
O que será devolvido pelo método HasMap.get() se os métodos equals e hashCode não forem sobrescritos?
sobes.tech IA
Resposta da IA
null será retornado se a chave usada para procurar não for exatamente o mesmo objeto (tem a mesma referência) que foi usado ao inserir o elemento.
A razão é que o HashMap usa uma combinação de hashCode() e equals() para determinar a "igualdade" das chaves. Se esses métodos não forem sobrescritos, usam as implementações de Object.
Object.hashCode()geralmente retorna um valor baseado no endereço de memória do objeto, ou seja, único para cada instância.Object.equals()simplesmente verifica a igualdade por referência (this == obj).
Portanto, para que o HashMap.get() encontre um elemento usando equals e hashCode() padrão, ambas as condições devem ser verdadeiras:
- Os códigos de hash (
Object.hashCode()) devem ser iguais, o que é muito improvável para objetos diferentes. - Os objetos devem ser iguais por referência (
Object.equals()), ou seja, devem ser a mesma instância.
Se você colocar um objeto no HashMap e depois tentar recuperá-lo usando outro objeto com os mesmos valores de campo (mas não a mesma instância), hashCode e equals padrão irão considerá-los diferentes, e get() retornará null.