Duvida de hashCode();

2 respostas
D

estou estudando equals() e hasCode(0…e tenho uma duvida…

para instancias equivalentes (01.equals(o2) , true) e hashCodes() idênticos , na hora em que eu quiser recuperar um objeto de um conjunto por exemplo…(HashTables, HashMaps , HashSets)…eu deverei popular um objeto com os dados que serão relevantes para a equivalência…e dai mandar recuperar certo ?

minha dúvida é a seguinte…
como meus objetos consequentemente terão códigos de hash iguais para instancias equivalentes , significa que qaundo eu mandar recuperar um objeto com determinada informação…e ouver mais de um objeto dentro daquele conjunto…ele irá me retornar todos os objetos ???

Obrigado![/b]

2 Respostas

vamorim

:arrow: Ao implementar um método equals() define-se o que é relevante para se determinar se dois objetos são iguais. Um objeto aluno pode ser igual a outro desde que, por exemplo, suas matrículas coincidam.

:arrow: Sempre dois objetos são iquais, seus valores de hash devem ser iguais também.

:arrow: É possível que objetos diferentes possuam o mesmo valor de hash. Um bom método hash é aquele que minimiza essa ocorrência. Os containers que utilizam hash, verificam depois se os objetos são realmente iguais.

:arrow: Agora quanto a um container retornar mais de um objeto, geralmente não. Na verdade, alguns containers nem armazenam objetos repetidos.

danieldestro

As coleções de HASH mantêm apenas um objeto para cada chave.

hash.put( um, new Integer(0) );

hash.put( um, new Integer(1) );

hash.put( dois, new Integer(2) );

Apenas os objetos Integer de valor 1 e 2 estarão no hash

Criado 6 de abril de 2004
Ultima resposta 6 de abr. de 2004
Respostas 2
Participantes 3