método HashCode

7 respostas
0

Alguem pode me dizer qual é a finalidade deste método?
Quando usar?
Como usar?

Se puderem mandar um exemplo ficarei muito grato…

Desde já agradeço

7 Respostas

lgi2020

Olá!

Dê uma olhada no link a seguir:
http://blog.caelum.com.br/2006/09/04/ensinando-que-e-o-hashcode/

Uma pesquisa rápida no Google também traz bastantes resultados interessantes.

Abraços.

gustavobs

também gostaria de saber como utiliza-lo. Lendo o artigo não ficou claro como por em pratica.

B

Bem, o uso principal de hashcodes é para ser usado com hashsets e outras estruturas que dependem de hashes.

Digamos que tenho 4 Strings, “Aline”, “Bruno”, “Camila” e “Danilo”

O hashcode de Aline é 1, de Bruno e Camila é 2, e de Danilo é 3.

Na hora de inserir algo num hashset, o algoritmo primeiro insere em lugares que chamamos de buckets, literalmente baldes. No balde um colocamos objetos com o hashcode 1, no dois colocamos com hashcode 2 e assim vai.

Digamos que quero encontrar a String “Camila” no hashset.

Primeiro ele vai percorrer o set até encontrar o balde dela, depois dentro do balde dela, que contém 2 objetos, ele vai procurar por ela mesma (usando equals ou contains).

Bem, a finalidade de separar em vários baldes é justamente para acelerar a pesquisa, ao invés de procurarmos uma String entre milhares, procuramos primeiro o balde, dentre dezenas deles, e depois o objeto dentro do balde, dentre dezenas de objetos. Muito mais rápido.

0

alguem tem um exemplo de implementação deste método?

pelo jeito esse conceito é muito importante, se alguém puder contribuir com um exemplo ficarei muito grato

gomesrod

O livro “Effective Java” fala sobre esses métodos da classe Object que podem ser sobrescritos: equals(), hashCode(), toString(), etc. *

Um resumo muito bom pode ser visto aqui:
http://br.geocities.com/vanessasabino/java/ej2.html

Também tem uma maneira prática bem legal que o ViniGodoy divulgou aqui no GUJ, mas infelizmente eu não lembro qual o tópico, tente dar uma pesquisada…

PS: Ainda não li esse livro, só estou fazendo média :roll:

davidbuzatto

Olá.

Quanto mais diferentes forem os valores gerados pelo hashCode para cada objeto instanciado de uma dada classe, mais rápida será a busca do objeto quando você tentar recuperar algum valor.

Um exemplo seria

@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((databaseType == null) ? 0 : databaseType.hashCode()); result = prime * result + ((fieldName == null) ? 0 : fieldName.hashCode()); return result; }

Onde databaseType e fieldName são Strings.

B

080808:
alguem tem um exemplo de implementação deste método?

pelo jeito esse conceito é muito importante, se alguém puder contribuir com um exemplo ficarei muito grato

IDEs recentes já vem com um gerador de equals e hashcode.

Criado 28 de outubro de 2008
Ultima resposta 29 de out. de 2008
Respostas 7
Participantes 6