Maps are powerful for managing data in Salesforce Apex. Recently I’ve been learning them and struggling but I stumbled onto this blog post which is awesome sauce! Enjoy. THIS guy just changed my life.
Imagine you had to wash 100 T-shirts. Would you wash them one by one—one per load of laundry, or would you group them in batches for just a few loads? The benefit of coding in the cloud is that you learn how to write more efficient code and waste fewer resources.
Read: Running Apex Code within Governor Execution Limits.
Think of maps like a list, but with separated record ID (Keyset) and records (Values). Futher, the Values side can be another List. (Mind Blown!) Rather than query for data many times, you query for data once into a Set, and use the Set tooling to access that data in your Apex.
What made me write this post. Well, it’s taken 2 weeks of deliberate effort to understand ALL of the features that come with Maps. They require constant use to learn them. But honestly, learning maps is no harder than learning to separate egg yolks from the whites.
Big win for today’s post. No more iterating over lists! Just create a map directly from the list.
“Once you have instantiated a map, you can add values to the map simply by using the
put()
method. However, if you happen to have a list of sObjects you can just pass that list in the constructor like so:https://www.iterativelogic.com/working-with-apex-code-maps/
Map<Id, Account> accountsById = new Map
“<Id, Account>
(listOfAccounts);
John’s Blog Post
https://www.iterativelogic.com/working-with-apex-code-maps/
https://www.iterativelogic.com/author/john-de-santiago/

Salesforce Developer Guide on Maps
https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_map.htm
Play with a map in Developer Console?
Go to Developer Console | Debug | Open Execute Anonymous Window
List<account> accList=new List<account>();
accList=[select id,Name from account Limit 20];//Querying the existing records into the list
Map<Id,Account> accMap= new Map<Id,Account>();
for(Account acc:accList) {
accMap.put(acc.id,acc); // Adding the accountID as key and Account record as value to the accMap
}
System.debug(‘Accounts stored in the accMap as Key-value pair :’+accMap);
Troy