2
respostas

Dúvida no Ex. 16 da Aula 5 - Collections framework

@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + numero; return result; }

Pessoal, essa implementação de hashCode tem necessidade de ser seguida? ou posso simplesmente fazer um return numero?

2 respostas

Opa,

Eu gosto de manter a do eclipse. A implementação do hashcode determina como os objetos vão ficar espalhados dentro do hash.

Retornar sempre o mesmo número, em vez de ter um hash vc vai acabar com uma lista, já que todos ficaram na mesma entrada.

Retornar sempre um número diferente, vai acabar criando uma estrutura muito grande na memória, já que cada objeto vai ficar numa entrada diferente no hash...

Então, já pedindo desculpas por me alongar, vc precisa ter muito cuidado na hora de implementar o hashcode. Se realmente tiver pensado nas coisas, manda bala e faz o seu, caso contrário, deixa o do eclipse :). Lembre também de manter a consistência entre o equals e o hashcode.

Obrigado Alberto pela resposta, bom acho que não entendi bem o hashCode vou voltar a estudar novamente. Nos exemplos apresentados no capitulo o atributo numero seria o numero da conta, teoricamente esse numero não poderia repetir. Com essa ideia em mente eu pensei que poderia simplesmente no metódo hashCode retorna esse atributo levanto em conta que ele seria único.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software