ECO2004
#1
Olá!
A impressão do meu código está aparecendo
2 : A
Por que isso está acontecendo? Esperava
1 : A
2 : B
package com.wilson.map;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
public class ClasseHashTable
{
public static void execute(Map<Integer, String> map)
{
Iterator<Integer> it = map.keySet().iterator();
while(it.hasNext())
{
System.out.println(it.next()+" : "+map.get(it.next()));
}
}
public static void main(String []args)
{
Map<Integer, String> map = new Hashtable<Integer, String>();
map.put(1, "A");
map.put(2, "B");
execute(map);
}
}
Você está chamando it.next() duas vezes no código.
ECO2004
#4
Sim, uma para imprimir a chave e outra para imprimir o valor cuja chave eu referencio.
quando vc usa o next e passa para o proximo laço fazendo com que ele pule para o segundo e acaba finalizando.
ECO2004
#6
Como é que fica o laço, então?
Mania de não usar variáveis temporárias. Seu problema deve ser resolvido como:
public static void execute(Map<Integer, String> map)
{
Iterator<Integer> it = map.keySet().iterator();
while(it.hasNext())
{
Integer current = it.next();
System.out.println(current +" : "+map.get(current));
}
}
Ou melhor, que é o jeito mais eficiente de tratar isso:
public static void execute(Map<Integer, String> map)
{
for (Map.Entry <Integer, String> entry : map.entrySet())
{
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
ECO2004
#8
[quote=entanglement]Mania de não usar variáveis temporárias. Seu problema deve ser resolvido como:
public static void execute(Map<Integer, String> map)
{
Iterator<Integer> it = map.keySet().iterator();
while(it.hasNext())
{
Integer current = it.next();
System.out.println(current +" : "+map.get(current));
}
}
Ou melhor, que é o jeito mais eficiente de tratar isso:
public static void execute(Map<Integer, String> map)
{
for (Map.Entry <Integer, String> entry : map.entrySet())
{
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
[/quote]
Obrigado…
Não entendo…o Map.Entry no meu código não estava sendo reconhecido!