For loop 如何在apex for循环中获得键和值?

For loop 如何在apex for循环中获得键和值?,for-loop,key,salesforce,apex-code,For Loop,Key,Salesforce,Apex Code,我有一个map对象,它存储,其中Id是联系人Id,字符串是生成的电子邮件 我已经成功地遍历了映射,并且能够在遍历映射时拉出值(字符串部分) 我希望能够做到的是,在我获取值时也能获取关键点。这在大多数语言中都很简单,但我似乎不知道如何在apex中实现 这就是我现在拥有的: Map<Id,String> mailContainer = new Map<Id,String>{}; for(String message : mailContainer.values()) {

我有一个map对象,它存储
,其中Id是联系人Id,字符串是生成的电子邮件

我已经成功地遍历了映射,并且能够在遍历映射时拉出值(字符串部分)

我希望能够做到的是,在我获取值时也能获取关键点。这在大多数语言中都很简单,但我似乎不知道如何在apex中实现

这就是我现在拥有的:

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

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

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

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

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

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

}

提前谢谢

迭代键而不是值:

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

你找不到它,因为它不存在。Apex允许对键或值进行迭代,但不允许对关联(键、值)进行迭代。

对于它的价值,这里有另一种实现方法(稍微详细一点)

Map myMap=Map();
set keys=myMap.keySet();
用于(id k:密钥){
system.debug(k+':'+myMap.get(k));
}

这太简单了。我真不敢相信我没想过要尝试。非常感谢!不过,您可以循环遍历这些键,然后使用这些键获取值。亚当的回答完美地说明了这一点。你是正确的,因为我无法迭代
(键,值)
,但使用Adam的方法仍然可以获得相同的效果。
    Map<id, string> myMap = Map<id, string> ();

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