Diese Funktionalität ist nur in bestimmten Ausbaustufen verfügbar.

Map

Maps dienen der Abbildung von Schlüssel-Wert-Paaren (engl. key value pairs). Jeder Schlüssel kann nur einmal in der Map enthalten sein. Werte können jedoch beliebig oft in der Map enthalten sein (Ausnahme: BidiMap). Ein Anwendungsfall für Maps ist ein Wörterbuch (Maps werden daher häufig auch als Dictionary bezeichnet). Schlüssel ist hier der Begriff in der Ausgangssprache. Werte sind die Begriffe in der jeweilige Zielsprache bzw. den Zielsprachen. Im Gegensatz zu Listen mit Schlüssel-Werte-Paaren kann in einer Map sehr effizient über die Schlüssel auf die Werte zugegriffen werden. Die Position des Schlüssels in der Map wird über eine so genannte Hash-Funktion ermittelt. Dadurch wird erreicht, dass der zeitliche Aufwand für den Zugriff unabhängig von der Anzahl der Schlüssel in der Map ist. Bei Listen hingegen ist die durchschnittliche Zugriffszeit proportional zur Anzahl der Objekte in der Liste, da nach Schlüsseln durch vergleichen der Listeneinträge mit dem Schlüssel gesucht werden muss.

Es stehen unterschiedliche Map-Arten zur Verfügung:

  1. Map: Schlüssel-Wert-Paare mit ungeordneten Schlüsseln.
  2. OrderedMap: Schlüssel-Wert-Paare mit geordneten Schlüsseln. Ordnungskriterium ist die Reihenfolge des Einfügens der Schlüssel in die Map.
  3. BidiMap: BidiMaps realisieren einen bidirektionalen Zugriff, d.h. es kann sowohl effizient mit dem Schlüssel auf die Werte zugegriffen werden als auch mit dem Wert auf den zugehörigen Schlüssel. Im Gegensatz zu den anderen Maps kann damit auch jeder Wert nur einmal in der Map enthalten sein.

Zu beachten ist, dass der Aufwand für das Einfügen von Schlüssel-Wert-Paaren und der Speicherbedarf von Map über OrderedMap nach BidiMap steigen. Daher sollten OrderedMap und BidiMap nicht pauschal sondern nur in begründeten Fällen verwendet werden.

Eine SortedMap steht nicht zur Verfügung, da dies durch <map>.keys.sortedBy(...) abgebildet werden kann.

Hinweis:

Zur Ermittlung eines Werts aus einer Map kann eine verkürzte Schreibweise angewendet werden. Dabei wird der Schlüssel als Methode interpretiert, die den Wert für diesen Schlüssel zurückliefert. Damit ist folgende Vorgehensweise möglich:

Map{Pair{'Hallo','hello'},Pair{'Welt','world'}}.Hallo liefert hello zurück.

Ist der Schlüssel gleich einem bestehenden und anwendbaren Methodennamen (keys, isEmpty, notEmpty, size, values) wird die Methode angewendet.

Mehr: