2012-10-01 11 views
5

Ho un oggetto mappa che memorizza <Id, String> dove ID è un ID di contatto e la stringa è un messaggio di posta elettronica generato.Come posso ottenere la chiave e il valore in un vertice per ciclo?

Ho eseguito correttamente il looping della mappa e sono riuscito a estrarre i valori (la porzione String) mentre eseguo un'iterazione attraverso la mappa.

Quello che vorrei essere in grado di fare è anche prendere la chiave quando prendo il valore. Questo è molto semplice da fare nella maggior parte delle lingue, ma non riesco a scoprire come farlo all'apice.

Questo è ciò che ho in questo momento:

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

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

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

} 

Quello che vorrei è qualcosa di simile:

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

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

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

} 

Grazie in anticipo!

risposta

11

scandire le chiavi invece dei valori:

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

Questo è così semplice. Non posso credere di non aver pensato di provarlo. Grazie mille! – VictorKilo

0

Non potete trovarlo perché non esiste. Apex consente di iterare su chiavi o valori ma non su associazioni (chiave, valore).

+1

Tuttavia, è possibile scorrere tra i tasti e quindi utilizzare tali tasti per acquisire il valore. La risposta di Adam lo dimostra perfettamente. Sei corretto nella misura in cui non riesco a iterare su '(chiave, valore)', ma è ancora possibile ottenere lo stesso effetto con il metodo di Adam. – VictorKilo

0

Per quello che vale, ecco un altro modo per realizzarlo (un po 'più prolisso) ...

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

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