Apex:map.Put() byVal 而不是 byRef?

Apex: map.Put() byVal instead of byRef?

我想知道是否有办法通过值而不是引用将元素 .put() 到地图中。

我有一张地图> 和一个填充它的循环,如下所示:

    Map<string,List<string>> result = new Map<string,List<string>>();
    List<string> temp = new list<string>();

    for(CustomObj__c i:customList){
        for(CustomObj__c j:customList2){
            if(j.id == i.id){
               temp.add(j.Contact__r.Owner.Id);
               temp.add(j.Contact__r.Id);
               result.put(i.Deal__r.id, temp);
               temp.clear();
               break;
            }                
        }
    }

问题出在我清除临时列表时。然后我得到一个有键但空列表值的映射。是否可以在地图中按值(创建副本).put() 列表,使其不受调用 temp.clear() 的影响?

谢谢大家,

扎克

您可以修改您的代码,例如 this.In 此代码我正在为每个地图插入创建一个新实例。

地图>结果=新地图>(); 列出温度;

for(CustomObj__c i:customList){
    for(CustomObj__c j:customList2){
        if(j.id == i.id){
           temp = new list<string>();
           temp.add(j.Contact__r.Owner.Id);
           temp.add(j.Contact__r.Id);
           result.put(i.Deal__r.id, temp);
           break;
        }                
    }
}

我认为你应该这样做

            if(j.id == i.id){
               List<string> temp = new list<string>();
               temp.add(j.Contact__r.Owner.Id);
               temp.add(j.Contact__r.Id);
               result.put(i.Deal__r.id, temp);