2011-05-05 10 views
7

favor me ayude a crear un bucle a través LinkedHashMap<String,ArrayList<String>> h:Cómo crear un bucle a través de LinkedHashMap <String, ArrayList <String>>?

if (h.get("key1").size() == 0) 
    System.out.println("There is no errors in key1."); 
else 
    System.out.println("ERROR: there are unexpected errors in key1."); 

if (h.get("key2").size() == 0) 
    System.out.println("There is no errors in key2."); 
else 
    System.out.println("ERROR: there are unexpected errors in key2."); 

if (h.get("key3").size() == 0) 
    System.out.println("There is no errors in key3."); 
else 
    System.out.println("ERROR: there are unexpected errors in key3."); 

if (h.get("key4").size() == 0) 
    System.out.println("There is no errors in key4.\n"); 
else 
    System.out.println("ERROR: there are unexpected errors in key4.\n"); 

Respuesta

13

gusta esta?

for (String key : h.keySet()) 
{ 
    System.out.println("Key: " + key); 
    for(String str : h.get(key)) 
    { 
     System.out.println("\t" +str); 
    } 
} 

EDIT:

for (String key : h.keySet()) 
{ 
    if(h.get(key).size() == 0) 
    { 
     System.out.println("There is no errors in " + key) ; 
    } 
    else 
    { 
     System.out.println("ERROR: there are unexpected errors in " + key); 
    } 
} 
+0

se puede añadir mis mensajes exactos en su ¿lazo? – Prostak

+0

@Prostak echa un vistazo a mi edición. Parece que eso es lo que quieres. –

+2

un poco tarde, pero ¿esto retorna en orden de inserción o tenemos que usar un iterador? los javadocs para 'LinkedHashMap' son idénticos a los de' HashMap' – edthethird

6

probar este código:

Map<String, ArrayList<String>> a = new LinkedHashMap<String, ArrayList<String>>(); 
Iterator<Entry<String,ArrayList<String>>> itr = a.entrySet().iterator(); 
while (itr.hasNext()) { 
    Entry<String,ArrayList<String>> entry = itr.next(); 
    String key = entry.getKey(); 
    System.out.println("key: " + key); 
    List<String> list = entry.getValue(); 
    System.out.println("value: " + list); 
} 
+0

¿Esto retornará en el orden de inserción? – Gopinath

+0

Sí asegurará el orden de inserción ya que LinkedHashMap se está utilizando aquí. – anubhava

3

Otra forma en la Java8 es con el método foreach()

Map<String, List<String>> test1 = new LinkedHashMap<String, List<String>>(); 
test1.forEach((key,value) -> { 
    System.out.println(key + " -> " + value); 
}); 
Cuestiones relacionadas