【问题标题】:Need to take out For Loop Inside another For loop需要在另一个 For 循环里面取出 For Loop
【发布时间】:2020-08-30 17:41:59
【问题描述】:

在顶点中,我试图在 for 循环中取出下面的 for 循环。

如果Sobject记录,下面的代码库是迭代列表。

 for(SObject sObj: listRecords){
      Map<String,Vals> RowsValsItemListMap = new Map<String,Vals>();
      List<Vals> ValsItemList = new List<Vals>();
      
      Map<String, Object> fieldsToValue = sObj.getPopulatedFieldsAsMap();
      system.debug('Value for is: fieldsToValue' +fieldsToValue);
      
      map01.put(sObj, fieldsToValue);
      
      for (String fieldName : fieldsToValue.keySet()){
          system.debug('Value for fieldName is: ' +fieldName);                  
          Vals ValsItem = new Vals();                    
          ValsItem.val = fieldsToValue.get(fieldName);                
          //ValsItem.val = (String)fieldsToValue.get(fieldName);                        
          RowsValsItemListMap.put(fieldName.toLowerCase(), ValsItem);                
      }                         
      

}

任何帮助都会非常感激。

【问题讨论】:

    标签: salesforce apex apex-code visualforce salesforce-lightning


    【解决方案1】:

    您的代码试图实现什么目标?您需要消除循环的原因是什么,您遇到了一些性能问题?

    乍一看,它看起来很难优化,你似乎在循环所有行(sobjects)和所有列(填充字段),例如在制作 CSV 输出时很难优化这样的事情。

    但仔细看,我可以看到一些看起来像错误的东西。我们可以优化它们;问题是你是否真的想做这些事情。

    1. List&lt;Vals&gt; ValsItemList = new List&lt;Vals&gt;(); - 这个变量似乎没有在任何地方使用,此外 - 它在每次迭代时都会重置。杀了它?

    2. 下一件事:

      for(SObject sObj: listRecords){
          Map<String,Vals> RowsValsItemListMap = new Map<String,Vals>();
          // ... unimportant
      
          for (String fieldName : fieldsToValue.keySet()){
              // ... unimportant
      
              RowsValsItemListMap.put(fieldName.toLowerCase(), ValsItem);                
          }
      }
      

    这个RowsValsItemListMap 是外循环的局部变量。设置它没有意义,无论如何它在循环之外都是不可见的。杀死它。如果在您未粘贴的某些代码中需要它 - 看看您在做什么。您在每次迭代时重置变量。您可能刚刚删除了外循环并仅在最后一个元素 (listRecords]listRecords.size()-1]) 上使用了内循环,结果相同。

    1. 这让我们几乎只剩下map01.put(sObj, fieldsToValue);。我们不知道它的作用,并且通过 sObject 索引映射可能是一个错误 - 如果您更改 sObject 中的字段,则映射的内部哈希键将更改,您可能无法再找到您的元素。如果真的需要 - 好吧,您只需要外部循环,这是您的优化。

    【讨论】:

      猜你喜欢
      • 2018-05-21
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      • 2014-03-21
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多