Junior — Middle
Quais são os princípios básicos da relação entre os métodos equals e hashCode em Java?
sobes.tech IA
Resposta da IA
Princípios básicos da relação entre equals e hashCode em Java:
- Se dois objetos são iguais segundo equals, o seu hashCode deve ser o mesmo.
- Se o hashCode de dois objetos é diferente, equals deve retornar false.
- Se equals retorna false, o hashCode pode coincidir, mas isso não é desejável, pois prejudica o desempenho das estruturas de hash.
Isto garante o funcionamento correto das coleções que usam hashing (HashMap, HashSet), onde hashCode determina a caixa e equals realiza a comparação exata dos objetos.
Exemplo:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return Objects.equals(id, person.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
Aqui, equals e hashCode baseiam-se no mesmo campo id, garantindo a sua coerência.