2012-10-01 64 views
5

Tengo un objeto de mapa que almacena <Id, String> donde Id es un Id. De contacto, y la Cadena es un mensaje de correo electrónico generado.¿Cómo puedo obtener la clave y el valor en un ápice para el ciclo?

He corregido con éxito a través del mapa y he podido extraer los valores (la parte de la cadena) mientras recorro el mapa.

Lo que me gustaría poder hacer es también tomar la llave cuando tomo el valor. Esto es muy simple de hacer en la mayoría de los lenguajes, pero parece que no puedo encontrar la manera de hacerlo en el ápice.

Esto es lo que tengo en este momento:

Map<Id,String> mailContainer = new Map<Id,String>{}; 

for(String message : mailContainer.values()) 
{ 

    // This will return my message as desired 
    System.debug(message); 

} 

Lo que me gustaría es algo como esto:

for(String key=>message : mailContainer.values()) 
{ 

    // This will return the contact Id 
    System.debug(key); 

    // This will return the message 
    System.debug(message); 

} 

Gracias de antemano!

Respuesta

11

iterar sobre las teclas en lugar de los valores:

for (Id id : mailContainer.keySet()) 
{ 
    System.debug(id); 
    System.debug(mailContainer.get(id)); 
} 
+0

Esto es tan simple. No puedo creer que no pensé en intentar eso. ¡Gracias un montón! – VictorKilo

0

No se puede encontrar, porque no existe. Apex permite iterar sobre claves o valores pero no asociaciones (clave, valor).

+1

Sin embargo, puede recorrer las teclas y luego usar esas teclas para tomar el valor. La respuesta de Adam muestra esto perfectamente. Estás en lo correcto en la medida en que no puedo iterar sobre '(clave, valor)', pero aún es posible obtener el mismo efecto con el método de Adam. – VictorKilo

0

Por lo que vale la pena, aquí es otra manera de lograr que (un poco más detallado) ...

Map<id, string> myMap = Map<id, string>(); 

    set<id> keys = myMap.keySet(); 
    for (id k:keys) { 
     system.debug(k +' : '+ myMap.get(k)); 
    } 
Cuestiones relacionadas