Estou com a seguinte dúvida; estou usando uma Hash Map pra criar um dicionario de dados, a minha duvida é quando eu vou ‘pegar’ os dados delas. Como limitei o numero de entradas a 256, havéra colisoes com crtza, oque eu nao estou conseguindo fazer é pegar um determinado valor ‘x’ da Map devolta, pois o metodo Get () tem como apenas uma key, mas no caso de haver colises como isso é tratado? qual dos ‘n’ valores ‘apontados’ pelo key ‘x’ será retornado?
HashMap map = new HashMap(256);
map.get(Object Key);
HashMap map = new HashMap(256);
map.put("fire", "fogo");//inseriu fogo na chave fire.
map.put("fire", "FOGO FOGO"); //sobrepos FOGO FOGO na chave fire.
map.put("water", "agua");//inseriu agua na chave whater.
map.get("water");// aqui vai Retornar agua
map.get("fire");// aqui vai Retornar FOGO FOGO
como pode ver não tem como existir duplicados, pois ao inserir novamente com a mesma chave, é posto o valor “por cima” do que ja existe.
hmmm
Mas teoricamente uma tabela hash não pode ter inumeras entradas para o mesmo ‘apontador’ ?
ou hash map do java nao é a mesma coisa que tabelha hash?
Acho que talvez não detalhei direito meu problema…
O conhecimento que tenho de tabela hash é mais téorico, eu até já implementei uma mas em C. Inclusive quando o fiz utilizei listas encadeadas, ou seja, um certo ‘apontador’ ( indexador ) gerado pela função de espalhamento “apontava” para uma lista encadeada.
Ai quando eu ia fazer uma busca na minha hash table, eu fazia primeiramente uma busca nos apontadores… identificando ele Se ouvesse mais de 1 elemento na sua lista ( no caso de ter acontecido colisão ) entao eu faço uma busca sequencial nela para encontrar o valor procurado.
Agora minha dúvida ( como sou iniciante em java ) é, a hash map do java faz isso? ou como ela funciona ? terrei q sobre escrever algum metodo para ela funcionar dessa forma?