2011-04-26 8 views
5

Tengo un método que devuelve List<Map<String,Object>>.cómo iterar una lista como Lista <Mapa <Cadena, Objeto >>

Cómo iterar en una lista como List<Map<String,Object>>?

+1

http://download.oracle.com/javase/tutorial/java/nutsandbolts/for.html –

+0

¿Podría ser más específico? –

+0

Si tiene la opción, intente evitar las estructuras de recopilación anidadas demasiado complejas como esta a favor de crear una nueva clase. Si otro programador encuentra tu List > probablemente tendrá que profundizar en tu código para descubrir que contiene exactamente. Con una clase, puede dejar claras sus intenciones con nombres y documentación. –

Respuesta

1

Esto debería funcionar:

List<Map<String, Object>> list = ... 

for (Map<String, Object> map : list) 
{ 
    ... 
} 

También puede utilizar un iterator o el método get dentro de un bucle for para acceder a los elementos dentro de la lista.

+0

Creo que te refieres a la lista en la primera línea de tu código – fvu

+0

De hecho. gracias por señalar eso – npinti

6
List<Map<String, Object>> list = getMyMap();  
for (Map<String, Object> map : list) { 
    for (Map.Entry<String, Object> entry : map.entrySet()) { 
     System.out.println(entry.getKey() + " - " + entry.getValue()); 
    } 
} 
  1. Bucle a través de lista de mapas
  2. entradas de mapa de identificador
+0

Tiene algunos errores tipográficos. Está asignando 'map' dos veces y los valores de la lista deben ser' Map '. – WhiteFang34

+0

@ WhiteFang34: Thx, editado. – timbooo

17

Parece que usted está buscando algo como esto:

List<Map<String, Object>> list; // this is what you have already 

for (Map<String, Object> map : list) { 
    for (Map.Entry<String, Object> entry : map.entrySet()) { 
     String key = entry.getKey(); 
     Object value = entry.getValue(); 
    } 
} 
0

con Java 1.8 (8) puede volver a escribirlo como:

list.forEach(item -> 
       item.forEach((k, v) -> System.out.println(k + ": " + (String)v) 
    ); 
1
Map<String, String> map = new HashMap<>(); 
    map.put("First", "1"); 
    map.put("Second", "2"); 
    map.put("third", "3"); 
    map.put("four", "4"); 

    // here is the logic 
    for (Map.Entry<String, String> entry : map.entrySet()) { 
     System.out.println(entry.getKey() + " - " + entry.getValue()); 
    } 
Cuestiones relacionadas