2012-10-01 3 views
5

Ich habe ein Kartenobjekt, das <Id, String> speichert, wobei die ID eine Kontakt-ID ist und die Zeichenfolge eine generierte E-Mail-Nachricht ist.Wie kann ich den Schlüssel und den Wert in einem Apex für die Schleife abrufen?

Ich habe erfolgreich die Karte durchgeschleift und konnte die Werte (den String-Teil) herausziehen, während ich durch die Karte iteriere.

Was ich gerne tun könnte, ist auch den Schlüssel zu greifen, wenn ich den Wert ergreife. Dies ist in den meisten Sprachen sehr einfach, aber ich kann nicht herausfinden, wie man es in der Spitze macht.

Das ist, was ich jetzt haben:

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

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

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

} 

Vielen Dank im Voraus:

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

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

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

} 

Was Ich mag wäre so etwas wie das ist!

Antwort

11

Iterate über die Tasten anstelle der Werte:

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

Dieses so einfach ist. Ich kann nicht glauben, dass ich nicht daran gedacht habe, das zu versuchen. Vielen Dank! – VictorKilo

0

Sie nicht finden können, weil es nicht existiert. Apex ermöglicht das Iterieren über Schlüssel oder Werte, aber nicht über Assoziationen (Schlüssel, Wert).

+1

Sie können jedoch die Schlüssel durchlaufen und dann mit diesen Schlüsseln den Wert übernehmen. Adams Antwort zeigt das perfekt. Sie sind in dem Maße korrekt, in dem ich nicht über "(Schlüssel, Wert)" iterieren kann, aber es ist immer noch möglich, denselben Effekt mit Adams Methode zu erhalten. – VictorKilo

0

Für was es wert ist, hier ist eine andere Art und Weise zu erreichen (etwas ausführlicher) ...

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

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