Sets

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'
To declare a set, use the Set keyword followed by the primitive data type name within <> characters. For example:
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 
    
Uniqueness of sObjects is determined by comparing fields. For example, if you try to add two accounts with the same name to a set, only one is added.
// 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);
However, if you add a description to one of the accounts, it is considered unique:
// 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.

Note the following limitations on sets:
© Copyright 2000–2012 salesforce.com, inc. All rights reserved.
Various trademarks held by their respective owners.