Utilisation de collections
Objectifs de formation
Une fois cette unité terminée, vous pourrez :
- Déclarer et initialiser une liste
- Expliquer deux manières d’ajouter des éléments à une liste
Collections
Une collection est un type de variable pouvant stocker plusieurs éléments. Dans notre exemple avec le thé, nous avons un sucrier contenant plusieurs morceaux de sucre. Le sucrier constitue une collection et les morceaux de sucre sont, eux, des éléments stockés dans celle-ci.
Bien qu’il existe trois types de collections Apex (listes, ensembles et cartes), nous aborderons uniquement les listes dans ce module.
Listes
Une liste Apex est un groupe ordonné d’éléments du même type, un peu comme une liste de courses.
- Thé
- Sucre
- Miel
- Lait
Chaque élément de la liste de courses est une chaîne de caractères et chacun d’entre eux a une position dans la liste. Pour déclarer une liste, vous aurez besoin de quelques outils. Vous allez utiliser le mot réservé « list », le type de données (tous les éléments doivent être du même type) que vous ferez figurer entre les caractères <>, ainsi que le mot réservé « new ». Il est obligatoire de faire figurer des parenthèses à la fin de cette instruction.
Déclaration d’une liste vide
- Dans la Developer Console, cliquez sur Débogage | Ouvrir la fenêtre d’exécution anonyme.
- Copiez le code suivant et collez-le dans la fenêtre Entrer du code Apex.
//Declare the groceries list List<String> groceries = new List<String>(); //The output for this statement is an empty list, (). System.debug('Groceries Value: ' + groceries);
- Cochez la case Ouvrir le journal, puis cliquez sur Exécuter. Le journal d’exécution s’ouvre et affiche le résultat de l’exécution de votre code.
- Cochez la case Déboguer uniquement en bas de la fenêtre.
Lorsque vous avez exécuté le code, vous avez probablement remarqué que le résultat était (). Comme vous n’avez rien ajouté à la liste, le résultat est vide. Lorsque vous avez déclaré la liste groceries
, vous avez créé un emplacement vide, prêt à accueillir des éléments.
Déclaration d’une liste avec une taille définie
Si nous connaissons la longueur exacte que doit avoir notre liste, nous pouvons définir sa taille lorsque nous la déclarons. Pour cela, il suffit d’inclure sa taille entre crochets, [ ], après le type de données, comme suit :
Ce code déclare une liste de chaînes appelée « groceries » et définit sa taille à 4 chaînes. La liste « groceries » vide ressemble à ceci :
La position séquentielle d’un élément est un nombre appelé index. L’index sert à référencer les éléments. Vous avez probablement appris à compter en commençant par le chiffre un. Cependant, dans de nombreux langages de programmation, on compte à partir de zéro ! Notre liste se présente donc comme suit lorsque nous écrivons notre code Apex.
- Thé
- Sucre
- Miel
- Lait
L’index utilisé pour désigner un élément de la liste sera le 0 pour Tea, le 1 pour Sugar, le 2 pour Honey et ainsi de suite.
Pour référencer un élément de la liste par son index (sa position dans la liste), vous devez procéder comme suit :
- Dans la Developer Console, cliquez sur Débogage | Ouvrir la fenêtre d’exécution anonyme.
- Copiez le code suivant et collez-le dans la fenêtre Entrer du code Apex.
String[] groceries = new String[4]; System.debug('Initialized groceries: ' + groceries); System.debug('Item 0: ' + groceries[0]);
- Cochez la case Ouvrir le journal, puis cliquez sur Exécuter. Le journal d’exécution s’ouvre et affiche le résultat de l’exécution de votre code.
- Cochez la case Déboguer uniquement en bas de la fenêtre.
La valeur du premier élément de la liste est « null ». Ajoutons maintenant quelques éléments à la liste.
Initialisation d’une liste
Initialiser une liste consiste à lui attribuer des valeurs initiales. Il existe deux manières d’ajouter des éléments à une liste :
- En déclarant et en initialisant une liste :
//Sets the first item in the list to 'Tea' List<String> groceries = new List<String>{'Tea'};
- En déclarant une liste vide et en y ajoutant des valeurs ultérieurement :
List<String> groceries = new List<String>(); groceries.add('Tea');
Déclaration et initialisation d’une liste
La syntaxe employée pour initialiser une liste avec des valeurs est semblable à celle utilisée pour déclarer une liste vide. Seule différence : des parenthèses ( ()
) sont utilisées à la place des accolades ( { }
) pour ajouter des valeurs.
- Dans la Developer Console, cliquez sur Débogage | Ouvrir la fenêtre d’exécution anonyme.
- Copiez le code suivant et collez-le dans la fenêtre Entrer du code Apex.
//Declare the groceries list List<String> groceries = new List<String>{'Tea','Sugar','Honey','Milk'}; //The output for this statement is Tea, Sugar, Honey, Milk System.debug('Groceries: ' + groceries);
- Cochez la case Ouvrir le journal, puis cliquez sur Exécuter. Le journal d’exécution s’ouvre et affiche le résultat de l’exécution de votre code.
- Cochez la case Déboguer uniquement en bas de la fenêtre.
Déclaration d’une liste vide et ajout ultérieur de valeurs
Toutefois, comment procéder si vous souhaitez ajouter des éléments ultérieurement ? Apex fournit des méthodes vous permettant de travailler avec des listes. Utilisons la méthode « add » pour ajouter des éléments à la liste groceries.
- Dans la Developer Console, cliquez sur Débogage | Ouvrir la fenêtre d’exécution anonyme.
- Copiez le code suivant et collez-le dans la fenêtre Entrer du code Apex.
//Create the groceries list List<String> groceries = new List<String>(); //The output for this statement is null System.debug('Groceries: ' + groceries); //Use the add method to add an element to the list groceries.add('Tea'); groceries.add('Sugar'); groceries.add('Honey'); groceries.add(2, 'Milk'); //The output for this statement is Tea, Sugar, Milk, Honey System.debug('Groceries: ' + groceries);
- Cochez la case Ouvrir le journal, puis cliquez sur Exécuter. Le journal d’exécution s’ouvre et affiche le résultat de l’exécution de votre code.
- Cochez la case Déboguer uniquement en bas de la fenêtre.
Avez-vous remarqué le point (« . ») entre groceries
et add
? Apex utilise ce qu’on appelle la notation pointée. Cette dernière a plusieurs fonctions. À la ligne 8, nous connectons la méthode add
(fournie par Apex) à la liste groceries
avec un point, afin d’ajouter un élément (Tea) à la liste.
La ligne 11 présente une autre manière d’ajouter un élément à une liste en l’insérant dans un index (position) spécifique :
Plus vous utiliserez du code Apex, mieux vous saurez déterminer quelle méthode utiliser. Pour le moment, les bases que vous apporte cette unité peuvent vous aider à démarrer.
Démystification des listes
Selon la manière utilisée pour ajouter des éléments à une liste, les résultats produits sont légèrement différents, et parfois même inattendus. Essayez de réaliser l’exercice suivant.
- Dans la Developer Console, cliquez sur Débogage | Ouvrir la fenêtre d’exécution anonyme.
- Copiez le code suivant et collez-le dans la fenêtre Entrer du code Apex.
String[] groceries = new String[4]; System.debug('Groceries: ' + groceries); groceries.add('Tea'); groceries.add('Sugar'); System.debug('Added 2 items: ' + groceries); groceries.add(1, 'Honey'); System.debug('Added Honey in index 1: ' + groceries); System.debug('Item 0: ' + groceries[0]);
- Cochez la case Ouvrir le journal, puis cliquez sur Exécuter. Le journal d’exécution s’ouvre et affiche le résultat de l’exécution de votre code.
- Cochez Déboguer uniquement en bas de la fenêtre.
Voilà des résultats intéressants :
Lors de l’ajout des deux chaînes des lignes 4 et 5, nous n’avions pas spécifié d’index. Les éléments Tea et Sugar ont donc été ajoutés à la fin de la liste, augmentant ainsi sa taille de quatre à six chaînes. À la ligne 8, nous avions explicitement spécifié l’index 1 pour Honey, alors pourquoi cet élément n’est-il pas en premier dans la liste ? Rappelez-vous : en programmation, on commence toujours à compter à partir de 0 au lieu de 1. À la ligne 11, le premier index de la liste est 0, qui contient actuellement une valeur null
.
L’écriture de code est très semblable à la résolution de problèmes mathématiques : il existe différentes manières de résoudre une même équation. Dans cette unité, vous avez appris qu’il existe plus d’une façon de travailler avec des listes dans Apex. Que vous souhaitiez déclarer une liste, l’initialiser ou faire référence à une valeur spécifique dans celle-ci, c’est à vous de choisir comment procéder. Vous vous sentez submergé par le nombre d’options s’offrant à vous ? Ne vous inquiétez pas. Une fois que vous serez à l’aise avec Apex, vous pourrez essayer différentes méthodes et découvrir celles qui fonctionnent le mieux selon les circonstances.