Skip to main content

Définition d’ensembles et de cartes

Objectifs de formation

Une fois cette unité terminée, vous pourrez :

  • Créer des ensembles et des cartes
  • Décrire en quoi les listes, les ensembles et les cartes diffèrent
  • Déterminer quand utiliser un ensemble au lieu d’une liste

Vidéo de démonstration Trail Together

Vous souhaitez être guidé pas à pas par un expert pendant que vous travaillez sur cette étape ? Regardez cette vidéo qui fait partie de la série Trail Together sur Trailhead Live. 

(Ce clip commence à 49 min 06 s, au cas où vous voudriez revenir en arrière et regarder à nouveau le début de l’étape.)

Introduction

Comme vous le savez déjà, une liste est une collection ordonnée d’éléments ayant le même type de données. Chaque élément y a une position, appelée index. L’extraction des éléments de la liste est facilitée par la présence de l’index numéroté. Toutefois, les collections Apex sont bien plus que de simples listes. Il existe d’ailleurs deux autres types de collections, les ensembles et les cartes.

Ensembles

Jusqu’à présent, le seul type de collection que vous ayez créé est la liste. Un ensemble est un ensemble non ordonné d’éléments uniques de même type. À l’instar d’une liste, un ensemble est un groupe d’éléments qu’on appelle justement des « éléments ». Tous ces éléments partagent le même type de données tel que string (chaîne), integer (entier) ou encore Account (Compte). Contrairement à une liste, les éléments d’un ensemble ne sont pas rangés dans un ordre particulier. Comme ses éléments ne sont pas ordonnés, un ensemble ne peut pas contenir de doublons. Si vous essayez d’ajouter dans l’ensemble un élément qui s’y trouve déjà, vous n’obtiendrez aucune erreur, mais cette nouvelle valeur n’y sera pas ajoutée. N’oubliez pas que lorsque vous utilisez une boucle pour parcourir une liste, vous accédez toujours à ses éléments dans l’ordre dans lequel ils ont été ajoutés. Lorsque vous parcourez un ensemble via une boucle, les éléments n’étant pas ordonnés, l’ordre dans lequel vous y accédez peut s’avérer aléatoire.

La déclaration d’un ensemble est semblable à la déclaration d’une liste, sauf que vous devez remplacer le mot-clé List par Set. Créons donc un ensemble de chaînes.

Création d’un ensemble

  1. Dans la Developer Console, cliquez sur File (Fichier) | New (Nouveau) | Apex Class (Classe Apex).
  2. Saisissez le nom de classe Tea.
  3. Cliquez sur OK.
  4. Remplacez le code de la classe Tea par ce code :
    public class Tea{
        public static void orderTea(){
            Set<String> teaTypes = new Set <String>();
            teaTypes.add('Black');
            teaTypes.add('White');
            teaTypes.add('Herbal');
            system.debug(teaTypes);
        }
    }
  5. Cliquez sur File (Fichier) | Save (Enregistrer).

Exécution du code

  1. Cliquez sur Debug (Débogage) | Open Execute Anonymous Window (Ouvrir une fenêtre d’exécution anonyme).
  2. Dans la fenêtre Enter Apex Code (Entrer du code Apex), collez le code suivant :
              Tea.orderTea();
  3. Sélectionnez Open log (Ouvrir le journal), puis cliquez sur Execute (Exécuter). Le journal d’exécution s’ouvre et affiche les résultats de l’exécution de votre code.
  4. Sélectionnez Debug Only (Déboguer uniquement) en bas de la fenêtre.

Le journal de débogage affiche les trois types de thés : Noir, Blanc et Aux plantes.

Définition des méthodes

Chaque type de collection dispose de ses propres méthodes. Vous avez ajouté Noir, Blanc et Aux plantes à une liste de types de thés à l’aide de la méthode add, fréquemment utilisée. Pour en savoir plus sur les méthodes définies, reportez-vous à la section Ressources en bas de cette unité.

Ajout d’une valeur en double à un ensemble

  1. Dans la classe Tea, remplacez la méthode orderTea (lignes 2 à 8) par le code suivant :
    public static void orderTea(){
        Set<String> teaTypes = new Set <String>{'Black', 'White', 'Herbal'};
        system.debug(teaTypes);
        teaTypes.add('Green');
        teaTypes.add('Black');
        system.debug(teaTypes);
    }
  2. Cliquez sur File (Fichier) | Save (Enregistrer).

Exécution du code

  1. Exécutez ce code : Tea.orderTea ();
    Astuce : Cliquez sur Debug (Débogage) | Execute Last (Exécuter précédent) pour réexécuter le code que vous aviez déjà exécuté à l’aide de l’exécution anonyme. Cette option est pratique lorsque vous modifiez une méthode et la réexécutez de la même manière.
  2. Consultez le journal de débogage.

La ligne 4 affiche teaTypes dans le journal afin que vous puissiez vérifier le contenu de l’ensemble. Les lignes 6 et 7 ajoutent les valeurs Vert et Noir à l’ensemble. La ligne 9 affiche teaTypes dans le journal afin que vous puissiez vérifier à nouveau le contenu de l’ensemble. Pourquoi la valeur Noir n’a-t-elle pas été ajoutée à l’ensemble ? 

Souvenez-vous : les ensembles n’autorisent pas la répétition des valeurs. De plus, gardez à l’esprit que vous ne pouvez pas indexer un ensemble comme vous le feriez avec une liste. Les ensembles sont généralement utilisés pour vérifier si une certaine valeur est incluse.

Choix entre une liste ou un ensemble

Peut-être vous demandez-vous : « maintenant que je sais utiliser les listes et les ensembles, comment choisir l’élément à utiliser ? » Réfléchissez à la collection que vous souhaitez créer et posez-vous ces deux questions :

  1. Est-ce que je veux autoriser les doublons ?
  2. L’ordre des éléments est-il important ?

Si vous répondez oui à au moins une de ces questions, utilisez une liste. Si vous répondez non aux deux questions, utilisez un ensemble. 

Nous vous avons présenté les listes et des ensembles, mais sachez qu’il existe encore un autre type de collection. Parlons maintenant des cartes.

Cartes

Une carte est une collection plus complexe qu’une liste ou un ensemble. Chaque élément d’une carte est composé de deux parties : une clé et une valeur, qu’on appelle ensemble « paire clé-valeur ». Les clés et les valeurs peuvent être de n’importe quel type de données. Bien que chaque clé soit unique dans une carte, les valeurs, elles, peuvent y être répétées. Imaginez une carte comportant des indicatifs téléphoniques de pays. Ici, l’indicatif du pays est la clé et son nom est la valeur. Chaque indicatif de pays est unique, mais les pays peuvent être dupliqués (ces derniers peuvent en effet avoir plusieurs indicatifs). 

La méthode put

Pour ajouter des paires clé-valeur à une carte, utilisez la méthode put comme présenté ci-dessous :

mapName.put (key, value);

La méthode put attend deux paramètres : une clé et une valeur. Créons une carte associant des types de thés (clés) à leurs profils de saveur (valeurs). 

Types de thés et profils de saveur

Types de thés (clé)
Profil de saveur (valeur)
Noir
Terreux
Aux plantes
Doux
Blanc
Doux

Création d’une carte

  1. Dans la classe Tea, remplacez le code existant par le code suivant :
    public class Tea{
        public static void orderTea(){
            Map <String, String> teaTypes = new Map <String, String>();
            teaTypes.put('Black', 'Earthy');
            teaTypes.put('White', 'Sweet');
            teaTypes.put('Herbal', 'Sweet');
            system.debug(teaTypes);
        }
    }
  2. Cliquez sur File (Fichier) | Save (Enregistrer).

Exécution du code

  1. Exécutez ce code : Tea.orderTea();
  2. Consultez le journal de débogage.

Le journal de débogage indique que la carte a trois paires clé-valeur :

Black=Earthy, Herbal=Sweet, White=Sweet

Les valeurs Terreux et Doux sont les profils de saveur. Doux correspond au profil de saveur de deux types de thés car les valeurs en double sont autorisées dans une carte.

La méthode get

Pour accéder aux valeurs d’une carte, utilisez la méthode get comme présenté ci-dessous : 

mapName.get (key);

Lorsqu’on lui fournit une clé existante, la méthode get renvoie la valeur de la clé. Si la clé fournie ne correspond pas à une valeur, la méthode get renvoie la valeur null. Rappelez-vous que la déclaration de la carte indique le type de données qu’elle attend comme valeur de retour. La variable renvoyant une valeur doit être du même type de données que celui indiqué dans la déclaration de la carte.

Obtention des valeurs d’une carte

  1. Dans la classe Tea, remplacez la méthode orderTea (lignes 2 à 8) par le code suivant :
    public static String orderTea(){
        Map <String, String> teaTypes = new Map <String, String>();
        teaTypes.put('Black', 'Earthy');
        teaTypes.put('White', 'Sweet');
        teaTypes.put('Herbal', 'Sweet');
        String flavorProfile = teaTypes.get('Herbal');
        System.debug('The flavorProfile of Herbal is: ' + flavorProfile);
        return flavorProfile;
    }
  2. Cliquez sur File (Fichier) | Save (Enregistrer).

Exécution du code

  1. Exécutez ce code :  Tea.orderTea();
  2. Consultez le journal de débogage.

Étant donné que la carte teaTypes est déclarée avec des valeurs de type string (chaîne), le type de renvoi doit également être une chaîne (flavorProfile).

Vous connaissez maintenant les trois types de collections Apex. 

Type de collection
Description
Une liste
Un groupe ordonné d’éléments du même type. Chaque élément possède un numéro d’index représentant sa position dans la liste.
Set
Un groupe non ordonné d’éléments uniques partageant le même type.
Map
Une collection de paires clé-valeur. Chaque clé unique correspond à une valeur unique.

Dans les modules plus avancés, vous aurez l’occasion de mener des requêtes sur les données présentes dans votre organisation. Une fois vos données reçues, vous aurez besoin d’endroits pour stocker les informations : les collections permettent justement de disposer d’un stockage temporaire. Si vous souhaitez en savoir plus sur les collections, consultez les liens renvoyant vers le Guide du développeur Apex dans la section Ressources. 

Ressources

Partagez vos commentaires sur Trailhead dans l'aide Salesforce.

Nous aimerions connaître votre expérience avec Trailhead. Vous pouvez désormais accéder au nouveau formulaire de commentaires à tout moment depuis le site d'aide Salesforce.

En savoir plus Continuer à partager vos commentaires