[RESOLVIDO] Tabela Hash

4 respostas
ECO2004

Estou com uma dúvida com relação ao Hash…

Aprendi que Hash não garante que a ordem de entrada dos dados será a mesma da saída.

Mas, usando o HashSet e HashMap, os valores impressos (depois que faço um for no set/map) estão na mesma ordem de entrada.

Se faço…

Set<Integer> set = new HashSet<Integer>();
		
set.add(2);
set.add(1);
set.add(4);

e depois com um for eu itero pelo conjunto, está imprimindo 2, 1 e 4 toda hora! Mas Hash não deveria garantir essa ordem!

Alguém sabe o que está acontecendo? O mesmo ocorre com o HashMap!

4 Respostas

E

os hashs não garantem a ordem, mas também não garantem que não virá a ordem de inserção. Essa diferença você vai perceber mais quando tiver muitos mais elementos no conjunto que o hash vai “agrupar” eles conforme eles se parecem.

ECO2004

Mas está sempre assim!

É normal?

E

sim sim, com poucos elementos é normal, o hash, como eu disse antes, “agrupa” os elementos conforme eles se parecem, se existem poucos elementos não tem porque agrupá-los e isso mantém a mesma ordem.

ECO2004

Entendi…obrigado!

Criado 26 de novembro de 2011
Ultima resposta 26 de nov. de 2011
Respostas 4
Participantes 2