2012-10-01 36 views
5

Tôi có đối tượng bản đồ lưu trữ <Id, String> trong đó Id là Id liên hệ và Chuỗi là một email được tạo.Làm thế nào tôi có thể nhận được khóa cũng như giá trị trong một đỉnh cho vòng lặp?

Tôi đã lặp thành công qua bản đồ và có thể lấy ra các giá trị (phần Chuỗi) khi tôi lặp qua bản đồ.

Điều tôi muốn làm là lấy chìa khóa khi tôi lấy giá trị. Điều này là rất đơn giản để làm trong hầu hết các ngôn ngữ, nhưng tôi dường như không thể tìm hiểu làm thế nào để làm điều đó trong đỉnh.

Đây là những gì tôi có ngay bây giờ:

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

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

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

} 

Những gì tôi muốn là một cái gì đó như thế này:

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

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

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

} 

Cảm ơn trước!

Trả lời

11

lặp qua các phím thay vì các giá trị:

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

Đây là đơn giản như vậy. Tôi không thể tin rằng tôi đã không nghĩ rằng để thử điều đó. Cảm ơn nhiều! – VictorKilo

0

Bạn không thể tìm thấy nó bởi vì nó không tồn tại. Apex cho phép lặp qua các khóa hoặc giá trị nhưng không cho phép kết hợp (khóa, giá trị).

+1

Bạn có thể lặp qua các phím, và sau đó sử dụng các phím đó để lấy giá trị. Câu trả lời của Adam cho thấy điều này một cách hoàn hảo. Bạn đúng trong phạm vi mà tôi không thể lặp qua '(khóa, giá trị)', nhưng vẫn có thể có được hiệu ứng tương tự với phương thức của Adam. – VictorKilo

0

Đối với những gì nó có giá trị, đây là một cách khác để thực hiện nó (hơi dài dòng hơn) ...

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

    set<id> keys = myMap.keySet(); 
    for (id k:keys) { 
     system.debug(k +' : '+ myMap.get(k)); 
    } 
Các vấn đề liên quan