Implementação interna de java.util.HashMap e HashSet

Eu tenho tentado entender a implementação interna dejava.util.HashMap ejava.util.HashSet.

A seguir estão as dúvidas surgindo em minha mente por um tempo:

Qual é a importância do@Override public int hashcode() em um HashMap / HashSet? Onde esse código hash é usado internamente?Eu geralmente vi a chave do HashMap ser umString gostarmyMap<String,Object>. Posso mapear os valores contrasomeObject (em vez de String) comomyMap<someObject, Object>? Quais contratos eu preciso obedecer para que isso aconteça com sucesso?

Desde já, obrigado !

EDITAR:

Estamos dizendo que o código hash da chave (cheque!) É a coisa real contra a qual o valor é mapeado na tabela de hash? E quando fazemosmyMap.get(someKey); java está chamando internamentesomeKey.hashCode() fazer com que o número na tabela de hash seja procurado pelo valor resultante?

Responda: Sim.

EDIT 2:

Em umjava.util.HashSet, de onde é a chave gerada para a tabela de hash? É do objeto que estamos adicionando, por exemplo.mySet.add(myObject); entãomyObject.hashCode() vai decidir onde isso é colocado na tabela de hash? (como não damos chaves em um HashSet).

Responda: O objeto adicionado se torna a chave. O valor é manequim!

questionAnswers(9)

yourAnswerToTheQuestion