A set is an unordered collection of primitives or sObjects that do not contain any duplicate elements. For example, the following table represents a set of String, that uses city names:
| 'San Francisco' | 'New York' | 'Paris' | 'Tokyo' |
new Set<String>()The following are ways to declare and populate a set:
Set<String> s1 = new Set<String>{'a', 'b + c'}; // Defines a new set with two elements Set<String> s2 = new Set<String>(s1); // Defines a new set that contains the // elements of the set created in the previous step
To access elements in a set, use the system methods provided by Apex. For example:
Set<Integer> s = new Set<Integer>(); // Define a new set s.add(1); // Add an element to the set System.assert(s.contains(1)); // Assert that the set contains an element s.remove(1); // Remove the element from the set
// Create two accounts, a1 and a2 Account a1 = new account(name='MyAccount'); Account a2 = new account(name='MyAccount'); // Add both accounts to the new set Set<Account> accountSet = new Set<Account>{a1, a2}; // Verify that the set only contains one item System.assertEquals(accountSet.size(), 1);
// Create two accounts, a1 and a2, and add a description to a2 Account a1 = new account(name='MyAccount'); Account a2 = new account(name='MyAccount', description='My test account'); // Add both accounts to the new set Set<Account> accountSet = new Set<Account>{a1, a2}; // Verify that the set contains two items System.assertEquals(accountSet.size(), 2);
For more information, including a complete list of all supported set system methods, see Set Methods.