public static Map<String, map<string,string>> retrieveCategoryCodes(){
    Map<String, map<string,string>> seasonObjMap = new Map<String, map<string,string>>();
    for(CM_Kalido_Reference_Data__c seasonObj : [SELECT Id, CM_Category_Value__c, CM_Category_Type__c, CM_Category_Code__c FROM CM_Kalido_Reference_Data__c]){
    seasonObjMap.put(seasonObj.CM_Category_Type__c, new map<string,string>{seasonObj.CM_Category_Value__c=>seasonObj.CM_Category_Code__c});    
    system.debug('@@seasonObjMap'+seasonObjMap);
    }
    system.debug('seasonObjMap'+seasonObjMap);
    return seasonObjMap;
}
1
priya n 24 Мар 2019 в 10:20
Я пытаюсь передать код категории с разными значениями категории и кодами категорий, но карта сохраняет только последнее значение из итерации
 – 
priya n
24 Мар 2019 в 10:20
Так работают карты. Для каждого ключа на карте может быть только одно значение. Последнее значение карты, помещенное на карту, является тем, которое «выигрывает», перезаписывая предыдущее значение для ключа. Если вы знаете, что ваши значения будут уникальными, вы можете изменить сопоставление.
 – 
crmprogdev
24 Мар 2019 в 10:28
Я пытаюсь получить вывод карты, поскольку тип категории A может иметь значение категории B и код категории как 2 для одной записи, аналогично тип категории A может иметь значение категории c и код категории как 2 для другой записи, можем ли мы построить карту для такой сценарий, который не зацикливается на каждом,
 – 
priya n
24 Мар 2019 в 10:37

1 ответ

Лучший ответ

Вам нужно проверить, имеет ли внешняя карта уже значение, и если да, используйте существующую карту. В общем, вы можете написать это так:

public static Map<String, map<string,string>> retrieveCategoryCodes(){
    Map<String, map<string,string>> seasonObjMap = new Map<String, map<string,string>>();
    for(CM_Kalido_Reference_Data__c seasonObj : [SELECT Id, CM_Category_Value__c, CM_Category_Type__c, CM_Category_Code__c FROM CM_Kalido_Reference_Data__c]){
      if(seasonObjMap.containsKey(seasonObj.CM_Category_Type__c)) {
        seasonObjMap.get(seasonObj.CM_Category_Type__c).put(seasonObj.CM_Category_Value__c, seasonObj.CM_Category_Code__c);
      } else {
        seasonObjMap.put(seasonObj.CM_Category_Type__c, new map<string,string>{seasonObj.CM_Category_Value__c=>seasonObj.CM_Category_Code__c});
      }
    }
    return seasonObjMap;
}
1
sfdcfox 24 Мар 2019 в 16:01