I have the following piece of source code:
List<Account> accountsList = ([SELECT id FROM Account]);
for(Account account: accountsList) {
List<CustomObject1__c> allCustomObjects1 = ([SELECT Id, Account FROM CustomObject1__c where AccountName =:account.Id]);
List<CustomObject2__c> allCustomObjects2 = ([SELECT Id, Account FROM CustomObject2__c where AccountName =:account.Id]);
for(CustomObject2__c cObj2 :allCustomObjects2) {
List<CustomObject3__c> allCustomObject3ForCobj1 = new List<CustomObject3__c>();
List<CustomObject3__c> allCustomObject3ForCobj2 = cObj2.CustomsObject3__r;
if(allCustomObjects1.size() == allCustomObject3ForCobj2.size()) {
continue;
}
if(allCustomObject3ForCobj2.size() > 0) {
delete allCustomObject3ForCobj2;
}
for(CustomObject1__c cObj1 :allCustomObjects1) {
CustomObject3__c cObj3 = new CustomObject3__c();
cObj3.CustomObject1__c = cObj1.Id;
cObj3.CustomObject2__c = cObj2.Id;
allCustomObject3ForCobj1.add(cObj3);
}
insert allCustomObject3ForCobj1;
}
}
How can I avoid nested for loops and use Map
instead?