A very useful feature many people overlook is the ability to construct a Map using a SOQL query.
Map<Id, Account> accounts = new Map<Id, Account>([SELECT Id, Name FROM Account]);
System.debug(accounts);
When you run this code, accounts
then contains a Map of your Account objects, keyed on Id. The output to the debug log would look similar to this:
11:15:10:025 USER_DEBUG [13]|DEBUG|{
XXXXXXXXXXXXXXXXXX=Account:{Id=XXXXXXXXXXXXXXXXXX, Name=Account 1},
YYYYYYYYYYYYYYYYYY=Account:{Id=YYYYYYYYYYYYYYYYYY, Name=Account 2},
ZZZZZZZZZZZZZZZZZZ=Account:{Id=ZZZZZZZZZZZZZZZZZZ, Name=Account 3},
...
}
You are now able to look up the Account objects using their Id. Furthermore, if you want a collection of unique IDs, you can call the keySet()
function of the Map class, like so:
System.debug(accounts.keySet());
which looks something like this in the debug log:
11:23:21:010 USER_DEBUG [15]|DEBUG|{XXXXXXXXXXXXXXXXXX, YYYYYYYYYYYYYYYYYY, ZZZZZZZZZZZZZZZZZZ, ...}
This is very useful when you need to query to get records and access them repeatedly in your code.