Populating a inner List in a Map collection
A simple way to populate a list that inside a map collection could be done like this.
You can run that piece of code in your developer console.
[code lang=”php”]
/**********************************************************************
*
* Populating a List inside a Map collection
*
************************************************************************/
List<Account> acclist = [SELECT Id, Name,
(SELECT Id, lastName FROM Contacts)
FROM Account LIMIT 50];
// This map will be contain the list of contacts as values and the
// account ids as key.
Map<Id,List<Contact>> accConMap = new Map<Id,List<Contact>();
for(account acc : acclist)
{
List<Contact> innerList = new List<Contact>();
for(contact c: acc.contacts)
innerList.add(c);
accConMap.put(acc.id, innerList);
}
// accConMap.put(acc.Id, innerList) will insert key and values to our map
//
[/code]
As you can see it is quite simple.
All you need to do is to iterate over the accounts an add all related contacts to a list.
This list will be added to our map together with the AccountId which will be the key in our map.
We can do even in simpler way like below .
Map<Id,List> accConMap = new Map<Id,List>();
for(account acc : acclist) {
accConMap.put(acc.id, acc.contacts);
}