2012-10-01 9 views
5

私は<Id, String>を格納するマップオブジェクトを持っています。ここで、Idは連絡先IDであり、Stringは生成された電子メールメッセージです。どのようにしてキーとループの頂点の値を取得できますか?

マップを繰り返しループして、マップを反復処理するときに値(文字列部分)を引き出すことができました。

私がしたいことは、値をつかむときにキーをつかむことです。これはほとんどの言語で非常に簡単ですが、私は頂点でそれを行う方法を見つけることができないようです。

これは私が今持っているものです:事前に

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

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

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

} 

ありがとう:

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

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

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

} 

私が望む何がこのようなものです!代わりに、値のキーの上に

答えて

11

反復:

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

これはとても簡単です。私はそれを試みるとは思わなかった。本当にありがとう! – VictorKilo

0

が存在しないので、あなたがそれを見つけることができません。 Apexでは、キーまたは値のいずれかを反復できますが、アソシエーション(キー、値)は反復できません。何が価値がある、ここでそれを達成する別の方法は、(少し冗長)だために

+1

しかし、キーをループすることができますし、それらのキーを使用して値を取得します。アダムの答えはこれを完全に示しています。あなたは '(key、value)'を反復できないほど正しいですが、Adamのメソッドでも同じ効果を得ることは可能です。 – VictorKilo

0

...

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

    set<id> keys = myMap.keySet(); 
    for (id k:keys) { 
     system.debug(k +' : '+ myMap.get(k)); 
    } 
関連する問題