Boa tarde,
1º - Para que um objeto seja igual ao outro, o hashcode deve ser o mesmo ?
2º - Para dizermos que um objeto é igual ao outro, precisamos criar um critério, no meu caso se o nome for igual.
public boolean equals(Object obj){
Aluno other = (Aluno) obj;
return this.nome.equals(other.nome);
}
E no meu método de hashcode eu criei automatico:
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((nome == null) ? 0 : nome.hashCode());
return result;
}
Na minha classe main eu instanciei dois objetos:
Aluno a3 = new Aluno("Alan", 2);
Aluno a4 = new Aluno("Alan", 2);
Em tempo de compilação, o compilador sabe que eu passei o nome igual para os dois objetos e atribui o mesmo hashcode ?
3º - Quando nós temos dois objetos equals com o mesmo hashcode. Ele continua com duas referências na memória ou um objeto apontando para mesma referência ?
Muito obrigado!