Como percorrer HashMap [Resolvido]

Bom dia.
Estou inserindo em uma lista valores para posteriormente inserí-los em um HashMap.
Qual a estrutura de repetição que uso para percorrer este meu HashMap ?
Não posso usar o FOR porque as minhas chaves não estão alimentadas em ordem…

Exemplo:

Chave 0 = “A”,“B”,“C”
Chave 1 = null
Chave 2 = “D”,“E”

Se eu percorrer usando FOR, a chave 2 não é mostrada, pois estou percorrendo a lista.size() e como a lista só tem dois elementos (size() = 2), não consigo capturar o conteúdo da chave 2.

Ou seja, pelo FOR ele me retorna o conteúdo da chave 0 e 1 somente.

Tem como ele percorrer somente as chaves que estão alimentadas e me retornar o conteúdo somente delas ?!?!?!

Aguardo uma ajuda de vocês…
Grande abraço!

Você pode usar o método keySet() pra retornar um set das chaves do seu hashmap.
Dentro do set de chaves vc vai poder iterar normalmente, seja com um iterator ou um foreach podendo assim ir recuperando cada valor do hashmap ja que vc vai ter as chaves uma a uma.
Não sei se é a melhor forma, mas eu sempre fiz assim :wink:

Abraço.

Teria como postar um código para esclarecer melhor ???
Na verdade só quero percorrer o meu HashMap e quero que ele verifique se a chave que eu estou percorrendo é diferente de null.
Se for, me retorna o conteúdo…se não, vai para a próxima chave!

[code]import java.util.HashMap;
import java.util.Set;

public class Teste
{

public static void main(String[] args)
{
	HashMap<String, String> mapa = new HashMap<String, String>();
	mapa.put("Diegoo", " Ricardo");
	mapa.put(null, "Teste");
	mapa.put(null, "Outro Teste");
	mapa.put("Diego", " ;)");
	Set<String> chaves = mapa.keySet();
	for (String chave : chaves)
	{
		if(chave != null)
			System.out.println(chave + mapa.get(chave));
	}
}	

}[/code]

isso aí :wink:

Abraço

3 curtidas

Ocorreu o seguinte problema com este código que postasse:

java.lang.Integer cannot be cast to java.lang.String

Isso deu bem na linha

for (String chave : chaves)

Vc ta usando JDK 1.5 aí?
No 1.6 roda normalmente.
Se for isso usa entao um iterator.

[code]import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class Teste
{

public static void main(String[] args)
{
	HashMap<String, String> mapa = new HashMap<String, String>();
	mapa.put("Diegoo", " Ricardo");
	mapa.put(null, "Teste");
	mapa.put(null, "Outro Teste");
	mapa.put("Diego", " ;)");
	Set<String> chaves = mapa.keySet();
	for (Iterator<String> iterator = chaves.iterator(); iterator.hasNext();)
	{
		String chave = iterator.next();
		if(chave != null)
			System.out.println(chave + mapa.get(chave));
	}
}	

}[/code]

[quote=criador]Ocorreu o seguinte problema com este código que postasse:

java.lang.Integer cannot be cast to java.lang.String

Isso deu bem na linha

for (String chave : chaves) [/quote]

Pelo que parece tu deve ter copiado parte do codigo que passaram aqui, para ti “chaves” é um HashMap<Integers, …> ?

Estou usando o JDK 1.6 e mesmo assim ocorre isto.
E com o iterator também ocorreu o mesmo problema!

[quote=criador]Estou usando o JDK 1.6 e mesmo assim ocorre isto.
E com o iterator também ocorreu o mesmo problema![/quote]

Caso seu HashMap seja de chaves de Integer muda o for pra

for (Integer chave : chaves)  

Beleza Diego…
Valeu a força…
Desta forma fechou!
Grande Abraço!!!

Valeu :wink:

Abraço.