Apex - Collections

Les collections est un type de variable qui peut stocker plusieurs nombres d'enregistrements. Par exemple, List peut stocker plusieurs enregistrements de l'objet Account. Voyons maintenant un aperçu détaillé de tous les types de collections.

Listes

La liste peut contenir n'importe quel nombre d'enregistrements de primitifs, de collections, de sObjects, définis par l'utilisateur et construits en type Apex. Il s'agit de l'un des types de collection les plus importants et il comporte également des méthodes système spécialement conçues pour être utilisées avec List. L'index de liste commence toujours par 0. Ceci est synonyme de tableau en Java. Une liste doit être déclarée avec le mot-clé «Liste».

Example

Ci-dessous se trouve la liste qui contient la liste d'un type de données primitif (chaîne), c'est-à-dire la liste des villes.

List<string> ListOfCities = new List<string>();
System.debug('Value Of ListOfCities'+ListOfCities);

La déclaration des valeurs initiales de list est facultative. Cependant, nous déclarerons ici les valeurs initiales. Voici un exemple qui montre la même chose.

List<string> ListOfStates = new List<string> {'NY', 'LA', 'LV'};
System.debug('Value ListOfStates'+ListOfStates);

Liste des comptes (sObject)

List<account> AccountToDelete = new List<account> (); //This will be null
System.debug('Value AccountToDelete'+AccountToDelete);

Nous pouvons également déclarer la liste imbriquée. Cela peut aller jusqu'à cinq niveaux. C'est ce qu'on appelle la liste multidimensionnelle.

C'est la liste des ensembles d'entiers.

List<List<Set<Integer>>> myNestedList = new List<List<Set<Integer>>>();
System.debug('value myNestedList'+myNestedList);

La liste peut contenir n'importe quel nombre d'enregistrements, mais il existe une limitation de la taille du tas pour éviter le problème de performances et monopoliser les ressources.

Méthodes pour les listes

Il existe des méthodes disponibles pour les listes que nous pouvons utiliser lors de la programmation pour obtenir certaines fonctionnalités telles que le calcul de la taille de la liste, l'ajout d'un élément, etc.

Voici quelques méthodes les plus fréquemment utilisées -

  • size()
  • add()
  • get()
  • clear()
  • set()

L'exemple suivant illustre l'utilisation de toutes ces méthodes

// Initialize the List
List<string> ListOfStatesMethod = new List<string>();

// This statement would give null as output in Debug logs
System.debug('Value of List'+ ListOfStatesMethod);

// Add element to the list using add method
ListOfStatesMethod.add('New York');
ListOfStatesMethod.add('Ohio');

// This statement would give New York and Ohio as output in Debug logs
System.debug('Value of List with new States'+ ListOfStatesMethod);

// Get the element at the index 0
String StateAtFirstPosition = ListOfStatesMethod.get(0);

// This statement would give New York as output in Debug log
System.debug('Value of List at First Position'+ StateAtFirstPosition);

// set the element at 1 position
ListOfStatesMethod.set(0, 'LA');

// This statement would give output in Debug log
System.debug('Value of List with element set at First Position' + ListOfStatesMethod[0]);

// Remove all the elements in List
ListOfStatesMethod.clear();

// This statement would give output in Debug log
System.debug('Value of List'+ ListOfStatesMethod);

Vous pouvez également utiliser la notation de tableau pour déclarer la liste, comme indiqué ci-dessous, mais ce n'est pas une pratique générale en programmation Apex -

String [] ListOfStates = new List<string>();

Ensembles

Un ensemble est un type de collection qui contient plusieurs nombres d'enregistrements uniques non ordonnés. Un ensemble ne peut pas avoir d'enregistrements en double. Comme les listes, les ensembles peuvent être imbriqués.

Example

Nous définirons l'ensemble des produits que l'entreprise vend.

Set<string> ProductSet = new Set<string>{'Phenol', 'Benzene', 'H2SO4'};
System.debug('Value of ProductSet'+ProductSet);

Méthodes pour les ensembles

Set prend en charge les méthodes que nous pouvons utiliser lors de la programmation comme indiqué ci-dessous (nous étendons l'exemple ci-dessus) -

// Adds an element to the set
// Define set if not defined previously
Set<string> ProductSet = new Set<string>{'Phenol', 'Benzene', 'H2SO4'};
ProductSet.add('HCL');
System.debug('Set with New Value '+ProductSet);

// Removes an element from set
ProductSet.remove('HCL');
System.debug('Set with removed value '+ProductSet);

// Check whether set contains the particular element or not and returns true or false
ProductSet.contains('HCL');
System.debug('Value of Set with all values '+ProductSet);

Plans

Il s'agit d'une paire clé / valeur qui contient la clé unique pour chaque valeur. La clé et la valeur peuvent être de n'importe quel type de données.

Example

L'exemple suivant représente la carte du nom du produit avec le code produit.

// Initialize the Map
Map<string, string> ProductCodeToProductName = new Map<string, string>
{'1000'=>'HCL', '1001'=>'H2SO4'};

// This statement would give as output as key value pair in Debug log
System.debug('value of ProductCodeToProductName'+ProductCodeToProductName);

Méthodes pour les cartes

Voici quelques exemples qui illustrent les méthodes qui peuvent être utilisées avec Map -

// Define a new map
Map<string, string> ProductCodeToProductName = new Map<string, string>();

// Insert a new key-value pair in the map where '1002' is key and 'Acetone' is value
ProductCodeToProductName.put('1002', 'Acetone');

// Insert a new key-value pair in the map where '1003' is key and 'Ketone' is value
ProductCodeToProductName.put('1003', 'Ketone');

// Assert that the map contains a specified key and respective value
System.assert(ProductCodeToProductName.containsKey('1002'));
System.debug('If output is true then Map contains the key and output is:'
   + ProductCodeToProductName.containsKey('1002'));

// Retrieves a value, given a particular key
String value = ProductCodeToProductName.get('1002');
System.debug('Value at the Specified key using get function: '+value);

// Return a set that contains all of the keys in the map
Set SetOfKeys = ProductCodeToProductName.keySet();
System.debug('Value of Set with Keys '+SetOfKeys);

Les valeurs de la carte peuvent ne pas être ordonnées et nous ne devons donc pas nous fier à l'ordre dans lequel les valeurs sont stockées et essayer d'accéder à la carte en utilisant toujours des clés. La valeur de la carte peut être nulle. Les clés de mappage lorsqu'elles sont déclarées String sont sensibles à la casse; par exemple, ABC et abc seront considérés comme des clés différentes et traités comme uniques.