Erfassen Sie Ihre Fortschritte
Trailhead-Startseite
Trailhead-Startseite
Geschätzte Zeit

Definieren von Sets und Maps

Lernziele

Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:

  • Erstellen von Sets und Maps
  • Beschreiben der Unterschiede zwischen Listen, Sets und Maps
  • Erläutern, wann ein Set anstelle einer Liste verwendet werden sollte

Wie Sie bereits gelernt haben, ist eine Liste eine geordnete Sammlung von Elementen desselben Datentyps. Jedes Element hat eine Position, die als Index bezeichnet wird. Dies vereinfacht das Abrufen von Elementen in der Liste anhand des nummerierten Indexes. Aber Apex-Sammlungen sind mehr als bloß Listen. Die anderen beiden Arten von Sammlungen sind Sets und Maps.

Sets

Bislang haben Sie einen Typ von Sammlung erstellt, nämlich eine Liste. Ein Set ist eine unsortierte Menge eindeutiger Elemente desselben Typs Ähnlich wie eine Liste ist ein Set eine Gruppe von Elementen, die alle den gleichen Datentyp haben, wie z.B. "string", "integer" oder auch "Account". Im Gegensatz zu einer Liste haben die Elemente eines Sets keine bestimmte Reihenfolge. Da die Elemente nicht geordnet sind, kann ein Set keine Duplikate enthalten. Wenn Sie versuchen, ein Element hinzuzufügen, das sich bereits im Set befindet, erhalten Sie keine Fehlermeldung, aber der neue Wert wird dem Set nicht hinzugefügt. Zur Erinnerung: Wenn Sie eine Liste in einer Schleife durchlaufen, greifen Sie immer in der Reihenfolge auf ihre Elemente zu, in der die Elemente zur Liste hinzugefügt wurden. Wenn Sie ein Set in einer Schleife durchlaufen, greifen Sie auf Elemente in zufälliger Reihenfolge zu, da die Elemente nicht geordnet sind.

Das Deklarieren eines Sets entspricht dem Deklarieren einer Liste, allerdings ersetzen Sie das Schlüsselwort List durch Set. Lassen Sie uns ein Set von Zeichenfolgen erstellen.

Erstellen eines Sets

  1. Klicken Sie in der Developer Console auf File | New | Apex Class.
  2. Geben Sie als Klassennamen Tea ein.
  3. Klicken Sie auf OK.
  4. Ersetzen Sie den Code in der "Tea"-Klasse durch diesen 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. Klicken Sie auf File | Save.

Ausführen des Codes

  1. Klicken Sie auf Debug | Open Execute Anonymous Window.
  2. Fügen Sie in das Fenster "Enter Apex Code" diesen Code ein:
              Tea.orderTea();
  3. Wählen Sie Open log aus und klicken Sie auf Execute. Das Ausführungsprotokoll wird mit dem Ergebnis der Ausführung des Codes geöffnet.
  4. Klicken Sie unten im Fenster auf Debug Only.

Das Debug-Protokoll enthält drei Teesorten: Black, White und Herbal.

"set"-Methoden

Jede Art von Sammlung hat ihre eigenen Methoden. Sie haben Black, White und Herbal mit der häufig verwendeten add-Methode zu einer Liste von Teesorten hinzugefügt. Wenn Sie mehr über "Set"-Methoden erfahren möchten, klicken Sie am Ende dieser Lektion in "Ressourcen" auf den entsprechenden Link.

Hinzufügen eines duplizierten Werts zu einem Set

  1. Ersetzen Sie in der "Tea"-Klasse die orderTea -Methode (Zeilen 2-8) durch diesen Code:
    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. Klicken Sie auf File | Save.

Ausführen des Codes

  1. Führen Sie diesen Code aus: Tea.orderTea();
    Tipp: Klicken Sie auf Debug | Execute Last, um Code, den Sie bereits mithilfe von "Execute Anonymous" ausgeführt haben, erneut auszuführen. Diese Option ist praktisch, wenn Sie Änderungen an einer Methode vornehmen und sie auf die gleiche Weise erneut ausführen.
  2. Überprüfen Sie das Debug-Protokoll.

In Zeile 4 im Protokoll wird teaTypes angezeigt, sodass Sie den Inhalt des Sets überprüfen können. In den Zeilen 6 und 7 werden Green und Black zum Set hinzugefügt. In Zeile 9 im Protokoll wird teaTypes angezeigt, sodass Sie den Inhalt des Sets erneut überprüfen können. Warum wurde Black nicht zum Set hinzugefügt? 

Zur Erinnerung: In Sets sind keine wiederholten Werte erlaubt. Denken Sie auch daran, dass Sie ein Set nicht wie eine Liste indizieren können. Sets dienen typischerweise zur Überprüfung, ob ein bestimmter Wert enthalten ist.

Wählen einer Liste oder eines Sets

Sie mögen denken: "Ich weiß jetzt, wie Listen und Sets zu verwenden sind. Wie entscheide ich, was ich nehmen soll?" Denken Sie an die Sammlung, die Sie erstellen möchten, und stellen Sie sich diese beiden Fragen.

  1. Möchte ich Duplikate zulassen?
  2. Ist die Reihenfolge der Elemente wichtig?

Wenn Sie mindestens eine dieser Fragen mit ja beantworten, verwenden Sie eine Liste. Wenn Sie beide Fragen mit nein beantworten, verwenden Sie ein Set. 

Sie haben sich mit Listen und Sets vertraut gemacht, aber es gibt noch einen weiteren Sammlungstyp. Lassen Sie uns als Nächstes über Maps reden.

Maps

Eine Map ist eine komplexere Sammlung als eine Liste oder ein Set. Jedes Element in einer Map besteht aus zwei Teilen: einem Schlüssel und einem Wert, auch Schlüssel-Wert-Paar genannt. Schlüssel und Werte können einen beliebigen Datentyp haben. Obwohl jeder Schlüssel eindeutig ist, können sich Werte in einer Map wiederholen. Stellen Sie sich eine Map mit Landesvorwahlen vor. Die Landesvorwahl ist der Schlüssel und der Name des Landes der Wert. Jede Landesvorwahl ist eindeutig, aber die Länder können dupliziert sein (da ein Land mehr als eine Landesvorwahl haben kann). 

Die "put"-Methode

Um einer Karte Schlüssel-Wert-Paare hinzuzufügen, verwenden Sie die put-Methode wie folgt:

mapName.put (Schlüssel, Wert);

Die put-Methode erwartet zwei Parameter: Schlüssel und Wert. Lassen Sie uns eine Map der Teesorten (Schlüssel) und ihrer Geschmacksprofile (Werte) erstellen. 

Teesorten und Geschmacksprofile

Teesorten (Schlüssel)
Geschmacksprofil (Wert)
Black
Earthy
Herbal
Sweet
White
Sweet

Erstellen einer Map

  1. Ersetzen Sie in der Klasse "Tea" den vorhandenen Code durch diesen Code:
    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. Klicken Sie auf File | Save.

Ausführen des Codes

  1. Führen Sie diesen Code aus: Tea.orderTea();
  2. Überprüfen Sie das Debug-Protokoll.

Das Debug-Protokoll zeigt, dass die Map drei Schlüssel-Wert-Paare hat:

Black=Earthy, Herbal=Sweet, White=Sweet

Die Werte Earthy und Sweet sind die Geschmacksprofile. Sweet ist das Geschmacksprofil zweier Teesorten, da duplizierte Werte in einer Map erlaubt sind.

Die "get"-Methode

Um auf Werte in einer Map zuzugreifen, verwenden Sie die get-Methode wie folgt: 

mapName.get (Schlüssel);

Wenn ihr ein vorhandener Schlüssel angegeben wird, gibt die get-Methode den Wert des Schlüssels zurück. Wenn der angegebene Schlüssel keinem Wert zugeordnet ist, gibt die get-Methode NULL zurück. Zur Erinnerung: Die Deklaration der Map gibt den Datentyp an, der als Rückgabewert erwartet wird. Die Variable, die einen Wert zurückgibt, muss denselben Datentyp haben, der in der Deklaration der Map angegeben ist.

Abrufen von Werten aus einer Map

  1. Ersetzen Sie in der "Tea"-Klasse die orderTea -Methode (Zeilen 2-8) durch diesen Code:
    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. Klicken Sie auf File | Save.

Ausführen des Codes

  1. Führen Sie diesen Code aus:  Tea.orderTea();
  2. Überprüfen Sie das Debug-Protokoll.

Da die teaTypes-Map mit Zeichenfolgenwerten deklariert wird, muss der Rückgabetyp (flavorProfile) ebenfalls eine Zeichenfolge sein.

Jetzt kennen Sie alle drei Arten von Apex-Sammlungen. 

Sammlungstyp
Beschreibung
Liste
Eine geordnete Gruppe von Elementen desselben Typs. Jedes Element hat eine Indexnummer, die seine Position in der Liste ausweist.
Set
Eine ungeordnete Gruppe von Elementen desselben Typs.
Map
Eine Sammlung von Schlüssel-Wert-Paaren. Jeder eindeutige Schlüssel ist einem einzelnen Wert zugeordnet.

In Modulen für Fortgeschrittene beginnen Sie, Daten innerhalb Ihrer Organisation abzufragen. Sobald Ihre Daten empfangen wurden, benötigen Sie dafür Speicherorte. Sammlungen sind hilfreich bei der Bereitstellung von temporärem Speicher. Weitere Informationen zu Sammlungen finden Sie im Abschnitt "Ressourcen" unter dem Link "Apex Developer Guide". 

Ressourcen