hashCode()

1 resposta
Dennys

Fala Galera!

Tenho uma certa deficiência com os hashCode()'s… Bom… vamos ao que eu sei…

hashCode é um código de identificação de um objeto, muito utilizados em tabelas hash para aumentar a performance em buscas…

Sempre que equals for sobrescrito devemos sobrescrever o hashCode para mandar o contrato de Object…

2 ou mais objetos podem ter o mesmo hashCode, isso não irá gerar erro, porém é uma péssima prática de programação, se isso acontecer não tem sentido armarzenar estes objetos em tabelas hash…

Alguém pode dar uma bela explanada sobre o assunto a nível de SCJP?!

Valeu!

Atn.
Dennys Fredericci
http://www.dennys.eti.br

1 Resposta

T

OK

OK

Aham, não é que seja uma má prática de programação - se você tem “infinitas” Strings e existem apenas 2^32 hash codes possíveis, então com certeza você terá alguma colisão (quando dois objetos têm o mesmo hash code).
O que se quer dizer é que seria desejával que se você tiver dois objetos diferentes, o hash seja diferente na maior parte das vezes, para que os objetos fiquem bem distribuídos dentro da tabela. O que na verdade é obrigatório é que se você recalcular o hash de um objeto, ele retorne o mesmo valor sempre que você recalcular.

Criado 21 de fevereiro de 2005
Ultima resposta 21 de fev. de 2005
Respostas 1
Participantes 2