Olá! Gostaria de entender a montagem do método hashCode
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((nome == null) ? 0 : nome.hashCode());
result = prime * result + numeroMatricula;
return result;
}Porquê ele usa esse 31 como número primo para montar o código de espalhamento? Li que é algo sobre ser um valor numérico que otimiza o espalhamento dos
buckets de Hash. É isso, alguem saberia dizer mais especificamente esse funcionamento?Qual o resultado prático de realizar a multiplicação
prime * result? (na primeira atribuição deresult)nome.hashCode()é a implementação da classeString?