salesforce collections

salesforce collections

We have 3 types of salesforce collections. They are
List
Set
Map

List: List is an ordered collection of elements which will allow duplicates.
Syntax:
List<datatype> listName = new List<datatype>();

– The datatype allows both primitive datatypes and non-primitive datatypes
– Size of the list is dynamically increased.

Methods in List

Add: Add the values to the list.
Ex: List<String> colors =new List<String>();
colors.add(‘Red’);
colors.add(‘White’);
colors.add(‘Black’); (OR)
List<String> colors =new List<String>{‘Red’,’White’,’Black’}
Get: Retrieve a values from list using index.
String getcolor = colors.get(1); —- we get the value is ‘White’ in to getcolor veriable.
Set: Replaces a former value with the value at given index.
colors.set(1,’Green’); —- List has value at index ‘ 1 ‘ is White is changed to Green.
Size: Return the number of elements in the list.
colors.size(); —- Gives the size of colors list is ‘2’
Clear: Remove the elements from the list.
colors.clear();

Example: Inserting 100 contacts in contacts object
public class ContactInsertion{
list<contact> contactList = new list<contact>();
public void methodName(){
for(integer i=0; i<100 ; i++ ){
contact cont = new contact(lastname = ‘contact’ + i);
contactList .add(cont);
}
insert contactList ;
}
}

– Go through the below link for the more list methods.

http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_list.htm

Set

Set is an unordered collection of elements which will not allow duplicates.

Syntax

set<datatype> setName = new set<datatype>();

  • data type allows only primitive datatypes and SObjects.
  • We cannot get the retrieve the data based on index because set does not  have index.

Go through the below link for the all Set methods.

http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_set.htm

Map

Map is key – value pairs.

Syntax

map<datatype,datatype> mapName = new map<datatype,datatype>();

  • First datatype is key and it allows primitive datatypes and should be unique.
  • Second datatype is values and it allows both primitive & non-primitive datatypes and allows duplicates.

Methods

Put()

Insert a key-value pair or replaces a value with the given value for the key .

  •    map.put(key,value);

Get()

Retrieves the value for a key.

  • map.get(key);

keySet()

Retrieves all the keys and return type is set;

  • map.keySet();

values()

Retrieves all the values and return type is list;

  • map.values();

Size()

Return the number of components in the map.

  • map.size();

Example: Create a map of Account Ids and Account objects.

public class AccountMapPopulation{

// Creating map with account id and account object

map <Id,Account> accountIdMap =new map<Id,Account>();

public void methodName(){

// creating the accounts

account acc1 = new account (name =’account1′ , industry = ‘ Banking’);

account acc2 =new account(name =’ account2′ , industry = ‘Agriculture’);

account acc3 = new account(name=’account3′ , industry=’Banking’);

// populating the map with account id and account object

accountIdMap .put(acc1.id,acc1);

accountIdMap .put(acc2.id,acc2);

accountIdMap .put(acc3.id,acc3);

}

}

  • Go through the the below link for the more map methods.

http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_map.htm

9 thoughts on “salesforce collections”

  1. This post is very nice. Good information about salesforce collections, very helpful to me. A big thanks to salesforcetutorial.com

  2. Hi This Material is very useful to all. I have a doubt, shell we insert records by using set. if yes give me some example…

  3. While executing below function I am getting method does not exist or invalid signature, please help to solve,
    executed in developer console : lessone.aaaaza();

    public class lessone{
    Invoice__c myinvs = New Invoice__c();

    public void aaaaza(){
    Map m = new Map();
    m.put(1,myinvs);

    system.debug(‘getmm’+m.get(1));
    }

    }

    1. hi.
      the first mistake you did was you did not created the instance for the class since the method is not a static.
      then in the map, you did not mapped the data types.
      copy paste my below code:

      public class tutorial1
      {
      Invoice__c myinvs = New Invoice__c(status__c=’open’);
      public void aaaaza(){
      Map m = new Map();
      m.put(1,myinvs);
      system.debug(‘getmm’+m.get(1));
      }
      }

      In developer console:
      tutorial1 tut = new tutorial1();
      tut.aaaaza();

      try this one and let me know if you still facing any issues. I will help you.

    2. hi fernando,
      sorry copy paste the below code:
      public class tutorial1 {
      Invoice__c myinvs = New Invoice__c(status__c=’open’);
      public void aaaaza(){
      Map m = new Map();
      m.put(1,myinvs);
      system.debug(‘getmm’+m.get(1));
      }
      }

Leave a Reply