Pra usar hashCode()?

5 respostas
A

Oi gente, por favor, pra q usar hashCode() vide abaixo um exemplo pego do meu serviço:

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

5 Respostas

A

Já lí a documentação… http://download.oracle.com/javase/6/docs/api/java/lang/Object.html#hashCode()

A questão é, pra q eu iria querer sobrescrever esse método, e qual seria tal utilidade?

A

Ví q, se a classe sobrescreve equals() ela deve sobrescrever hashCode()… Outra dúvida, vide o equals() sobrescrito, peguei tb do meu serviço:

@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Idioma other = (Idioma) obj; if (getIdIdioma() == null) { if (other.getIdIdioma() != null) return false; } else if (!idIdioma.equals(other.idIdioma)) return false; return true; }

Está sobrescrito mas dá a impressão q não estou usando ele… pois dentro da classe q ele está não ninguém o chamando… consigo chamá-lo de outra classe?

evertonsilvagomesjav

hashCode e equals, tem um contrato, se vc quiser saber se dois objetos criados por vc são iguais, então vc tera que sobreescrever esses dois metodos.

Uma maneira bem simples de se explicar, é que “hashCode” é um atalho para essa verificação, ou seja primeiro a JVM vai verificar se os objetos a serem verificados tem os hashs iguais, se forem iguais então ela parte para o método equals, este por sua vez se retornar true, então os objetos são iguais.

rafaelevoinfo

Um bom motivo pra vc querer sobrescrever este método é caso vc queira que alguma classe sua seja uma chave
de alguma coleção Map. Pois, caso vc não sobrescreva o hashcode, vc não irá conseguir encontrar seus dados na coleção.

ViniGodoy

Várias coleções como o HashMap e o HashSet dependem do hashCode corretamente implementado. Ele é uma forma barata de testar se dois objetos são diferentes (mas não se são iguais).

Criado 8 de setembro de 2010
Ultima resposta 8 de set. de 2010
Respostas 5
Participantes 4