Assoziatives Array

Das Assoziative Array ist eine Datenstruktur, die – anders als ein echtes Array – nichtnumerische Schlüssel (zumeist Zeichenketten) verwendet, um die enthaltenen Elemente zu adressieren; diese liegen in keiner festgelegten Reihenfolge vor. Idealerweise werden die Schlüssel so gewählt, dass eine für die Programmierer nachvollziehbare Verbindung zwischen Schlüssel und Datenwert besteht. Mathematisch betrachtet wird durch die Wertezuordnungen im assoziativen Array eine Funktion mit endlichem Wertebereich beschrieben. Eine Implementation ist mit Bäumen möglich, die bei weitem häufigste Umsetzung ist jedoch die Hashtabelle.

Programmiersprachen, die assoziative Arrays unterstützen, sind z. B. Lua, Perl, PHP, Python, Ruby, LISP, Tcl, Smalltalk, C++, C#, Objective-C (als Klasse der Standardbibliothek), D, Java, Delphi (als Array-Property), PostScript, GNU Bourne-Again SHell (ab Version 4.0), PL/SQL und Visual Basic. Statt von einem assoziativen Array spricht man auch von einem Dictionary (Smalltalk, Python, Objective-C, PostScript, C#), einer Map (C++, Java), einem Hash (Perl, Ruby) oder einer Hashtable/Hashmap (Java, Windows PowerShell).

Beispiele

Die Ausgabe aller Beispiele ist "Mustermann". Es handelt sich um jeweils das identische Beispiel, implementiert in verschiedenen Sprachen.

Eindimensionales Assoziatives Array in Ada:

 with Ada.Containers.Indefinite_Hashed_Maps,
      Ada.Strings.Hash,
      Ada.Text_IO;
 procedure Hash_Map_Example is
   package String_String_Maps is new Ada.Containers.Indefinite_Hashed_Maps
     (Key_Type        => String,
      Element_Type    => String,
      Hash            => Ada.Strings.Hash,
      Equivalent_Keys => "=");
   use String_String_Maps;
   Person : String_String_Maps.Map;
 begin
   Person.Insert ("Vorname"   , "Hans");
   Person.Insert ("Name"      , "Mustermann");
   Person.Insert ("Geburtstag", "01.01.01");
   Person.Insert ("Wohnort"   , "Musterstadt");
   Ada.Text_IO.Put_Line (Element (Person.Find ("Name")));
 end Hash_Map_Example;

Das gleiche Beispiel in Tcl:

 set person(Vorname)    Hans
 set person(Name)       Mustermann
 set person(Geburtstag) 01.01.01
 set person(Wohnort)    Musterstadt
 puts $person(Name)
 
oder
 
 array set person { Vorname    Hans
                    Name       Mustermann
                    Geburtstag 01.01.01
                    Wohnort    Musterstadt }
 puts $person(Name)

Das gleiche Beispiel in PHP:

 $person = array ( 'Vorname'    => 'Hans',
                   'Name'       => 'Mustermann',
                   'Geburtstag' => '01.01.01',
                   'Wohnort'    => 'Musterstadt');
 echo $person['Name'];
 
oder
 
 $person = array();
 $person['Vorname']    = 'Hans';
 $person['Name']       = 'Mustermann';
 $person['Geburtstag'] = '01.01.01';
 $person['Wohnort']    = 'Musterstadt';
 echo $person['Name'];

Das gleiche Beispiel in Perl:

 %person = ( 'Vorname'    => 'Hans',
             'Name'       => 'Mustermann',
             'Geburtstag' => '01.01.01',
             'Wohnort'    => 'Musterstadt' );
 print $person{'Name'};

Das gleiche Beispiel in Java:

 Map<String, String> person = new HashMap<String, String>();
 person.put("Vorname", "Hans");
 person.put("Name", "Mustermann");
 person.put("Geburtstag", "01.01.01");
 person.put("Wohnort", "Musterstadt");
 System.out.println(person.get("Name"));

Das gleiche Beispiel in C++:

 map<string, string> person;
 person[ "Vorname"    ] = "Hans";
 person[ "Name"       ] = "Mustermann";
 person[ "Geburtstag" ] = "01.01.01";
 person[ "Wohnort"    ] = "Musterstadt";
 cout << person["Name"];

Das gleiche Beispiel in Python:

 person = { "Vorname"   : "Hans",
            "Name"      : "Mustermann",
            "Geburtstag": "01.01.01",
            "Wohnort"   : "Musterstadt" }
 print person["Name"]
 
oder 
 
 person = {}
 person[ "Vorname"    ] = "Hans";
 person[ "Name"       ] = "Mustermann";
 person[ "Geburtstag" ] = "01.01.01";
 person[ "Wohnort"    ] = "Musterstadt";
 print person["Name"]

In Python ist auch folgendes möglich:

 print '%(Vorname)s %(Name)s, %(Wohnort)s' % person

Das gleiche Beispiel in Ruby:

 person = { :Vorname    => 'Hans', 
            :Name       => 'Mustermann', 
            :Geburtstag => '01.01.01', 
            :Wohnort    => 'Musterstadt' }
 puts person[:Name]

Das gleiche Beispiel in Windows PowerShell:

$person = @{ Vorname    = 'Hans';
             Name       = 'Mustermann';
             Geburtstag = '01.01.01';
             Wohnort    = 'Musterstadt' }
$person['Name']

Das gleiche Beispiel in JavaScript:

 var person = {
   Vorname:    'Hans',
   Name:       'Mustermann',
   Geburtstag: '01.01.01',
   Wohnort:    'Musterstadt'
 };
 alert(person.Name);
 
oder
 
 var person = new Object();
 person.Vorname = 'Hans';
 person.Name = 'Mustermann';
 person.Geburtstag = '01.01.01';
 person.Wohnort = 'Musterstadt';
 alert(person.Name);

Das gleiche Beispiel in PL/SQL:

 DECLARE
   TYPE ty_person IS TABLE OF VARCHAR2(50) INDEX BY VARCHAR2(50);
   person  ty_person;
 BEGIN
   person('Vorname')    := 'Hans';
   person('Name')       := 'Mustermann';
   person('Geburtstag') := '01.01.01';
   person('Wohnort')    := 'Musterstadt';
   DBMS_OUTPUT.PUT_LINE(person('Name'));
 END;

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Assoziatives Feld — Das Assoziative Array ist eine Datenstruktur, die – anders als ein echtes Array – nichtnumerische Schlüssel (zumeist Zeichenketten) verwendet, um die enthaltenen Elemente zu adressieren; diese liegen in keiner festgelegten Reihenfolge vor.… …   Deutsch Wikipedia

  • Assoziatives Datenfeld — Das assoziative Datenfeld (englisch „associative array“) ist eine Datenstruktur, die – anders als ein echtes Feld (englisch „array“) – nichtnumerische Schlüssel (zumeist Zeichenketten) verwendet, um die enthaltenen Elemente zu adressieren; diese… …   Deutsch Wikipedia

  • Dope-Vektor — Ein Feld (engl. Array [əˈɹeɪ, Betonung auf 2. Silbe] für „Anordnung“, „Aufstellung“, „Reihe“, „Reihung“, „Bereich“) bezeichnet in der Informatik eine Datenstruktur. Dabei wird zwischen einem Standard Feld und dem assoziativen Array unterschieden …   Deutsch Wikipedia

  • Feldtyp — Ein Feld (engl. Array [əˈɹeɪ, Betonung auf 2. Silbe] für „Anordnung“, „Aufstellung“, „Reihe“, „Reihung“, „Bereich“) bezeichnet in der Informatik eine Datenstruktur. Dabei wird zwischen einem Standard Feld und dem assoziativen Array unterschieden …   Deutsch Wikipedia

  • Speicherabbildungsfunktion — Ein Feld (engl. Array [əˈɹeɪ, Betonung auf 2. Silbe] für „Anordnung“, „Aufstellung“, „Reihe“, „Reihung“, „Bereich“) bezeichnet in der Informatik eine Datenstruktur. Dabei wird zwischen einem Standard Feld und dem assoziativen Array unterschieden …   Deutsch Wikipedia

  • Look-Up-Table — Die Logarithmentafel als Vorläufer der LUT In der Informatik und in der Digitaltechnik ist eine Lookup Tabelle (LUT) eine Datenstruktur, die vorberechnete Daten einer aufwändigen Berechnung enthält. Mithilfe einer solchen Tabelle ist es möglich,… …   Deutsch Wikipedia

  • Look-Up Table — Die Logarithmentafel als Vorläufer der LUT In der Informatik und in der Digitaltechnik ist eine Lookup Tabelle (LUT) eine Datenstruktur, die vorberechnete Daten einer aufwändigen Berechnung enthält. Mithilfe einer solchen Tabelle ist es möglich,… …   Deutsch Wikipedia

  • Look-up — Die Logarithmentafel als Vorläufer der LUT In der Informatik und in der Digitaltechnik ist eine Lookup Tabelle (LUT) eine Datenstruktur, die vorberechnete Daten einer aufwändigen Berechnung enthält. Mithilfe einer solchen Tabelle ist es möglich,… …   Deutsch Wikipedia

  • Datenverbund — Ein Verbund (engl. object composition) ist ein aus Komponenten verschiedener Datentypen zusammengesetzter Datentyp. Da die Komponenten eines Verbunds wieder Verbünde sein können, können so auch komplexe Datenstrukturen definiert werden. Es gibt… …   Deutsch Wikipedia

  • Struct — Ein Verbund (engl. object composition) ist ein aus Komponenten verschiedener Datentypen zusammengesetzter Datentyp. Da die Komponenten eines Verbunds wieder Verbünde sein können, können so auch komplexe Datenstrukturen definiert werden. Es gibt… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”