Junior — Middle
Como é que a correspondência de chaves é determinada nestas estruturas ou algoritmos?
sobes.tech IA
Resposta da IA
Em Java, a correspondência de chaves em estruturas de dados como HashMap ou HashSet é determinada pelos métodos hashCode() e equals() do objeto chave.
- Primeiro, chama-se
hashCode()para calcular o código hash da chave, a fim de determinar o balde (cesto) na tabela hash. - Se houver vários elementos nesse balde (colisão), o método
equals()é chamado em cada um deles para verificar a igualdade real das chaves.
Assim, para que as chaves funcionem corretamente, é necessário sobrescrever ambos os métodos: hashCode() e equals(), de modo que objetos com valores lógicos iguais tenham o mesmo código hash e sejam considerados iguais.
Exemplo:
class Person {
private String id;
@Override
public int hashCode() {
return id.hashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person other = (Person) obj;
return id.equals(other.id);
}
}