<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wx="http://ilps.science.uva.nl/WikiXML/wx" xml:lang="nl" lang="nl">
<head>
<title>Associatieve array</title>
<meta name="wx_namespace" content="0"/>
<meta name="wx_pagename" content="Associatieve_array"/>
<meta name="wx_page_id" content="313173"/>
</head>
<body>
<div id="wx_article">
<wx:section level="1" title="Associatieve array" id="wxsec1"><h1 class="pagetitle" id="wx1">Associatieve array</h1>

<p id="wx2">Een <b id="wx3">associatieve array</b> is, in een <a href="/wnl/Programmeertaal" title="Programmeertaal" wx:linktype="known" wx:pagename="Programmeertaal" wx:page_id="1438" id="wx4">programmeertaal</a>, een <a href="/wnl/Container_%28informatica%29" title="Container (informatica)" wx:linktype="known" wx:pagename="Container_(informatica)" wx:page_id="257321" id="wx5">datacontainer</a> waarmee door middel van een sleutelobject een ander object gezocht wordt.</p>

<p id="wx6">In gewone taal: een array waarbij de index niet per se een getal hoeft te zijn, maar ook iets anders, bijvoorbeeld een string.</p>

<p id="wx7">Een associatieve array gaat ook door het leven als een <b id="wx8">map</b> of een <b id="wx9">dictionary</b>. Het woord <i id="wx10">map</i> wordt gebruikt omdat deze datastructuur een <i id="wx11">mapping</i> implementeert, hetgeen een soort vertaling is. Hier komt ook de term <i id="wx12">dictionary</i> vandaan, je stopt er een woord in en er komt een ander woord uit. Een associatieve array vertoont veel gelijkenis met een tabel uit een relationele database.</p>

<a id="Uitleg" name="Uitleg"/>
<wx:section level="2" title="Uitleg" id="wxsec2"><h2 id="wx13">Uitleg</h2>

<p id="wx14">Stel dat in een fictieve programmeertaal de syntaxis voor het opvragen van een waarde uit een array er zo uitziet:</p>

<pre id="wx15">
arraynaam[index]
</pre>

<p id="wx16">Bijvoorbeeld <b id="wx17">adressen[1]</b> geeft het adres dat op positie 1 in de array staat. Dit is niet altijd praktisch, want vaak wil je het adres hebben van iemand met bijvoorbeeld een bepaalde naam. De <a href="/wnl/Datastructuur" title="Datastructuur" wx:linktype="known" wx:pagename="Datastructuur" wx:page_id="27683" id="wx18">datastructuur</a> '<a href="/wnl/Array" title="Array" wx:linktype="known" wx:pagename="Array" wx:page_id="7682" id="wx19">array</a>' is in dit geval minder geschikt omdat er dan een <i id="wx20">loop</i> geschreven moet worden die de array doorloopt en steeds test op de naam. Dit levert onnodig veel broncode op en is bovendien niet efficiënt in termen van rekentijd.</p>

<p id="wx21">Het is veel leesbaarder indien dit genoteerd kan worden als</p>

<pre id="wx22">
arraynaam[zoeksleutel]
</pre>

<p id="wx23">zodat het opvragen van het gewenste array-element eruitziet als <b id="wx24">adressen["jan"]</b>. Dit is precies wat een associatieve array is. De zoeksleutel hoeft geen string te zijn zoals in dit voorbeeld, maar kan elk type object zijn.</p>

<hr id="wx25"/>
<p id="wx26">Een associatieve array kan zo gemaakt worden dat deze zoekt op meerdere sleutels zoals bij een multidimensionele array. Bijvoorbeeld: <b id="wx27">adressen["jan", "smit"]</b>. Het is echter gebruikelijker eerst een object te maken dat de volledige zoeksleutel bevat en deze als argument mee te geven. Dit komt er dan, in een fictieve programmeertaal, zo uit te zien:</p>

<pre id="wx28">
arraynaam[new sleutelklasse(sleutel1, sleutel2)]
</pre>

<a id="Gebruik" name="Gebruik"/>
</wx:section><wx:section level="2" title="Gebruik" id="wxsec3"><h2 id="wx29">Gebruik</h2>

<p id="wx30">Associatieve arrays worden gebruikt in vele programmeertalen. Enkele 'scriptachtige' talen zoals <a href="/wnl/Awk" title="Awk" wx:linktype="known" wx:pagename="Awk" wx:page_id="17610" id="wx31">awk</a> of <a href="/wnl/Javascript" title="Javascript" wx:linktype="known" wx:pagename="Javascript" wx:page_id="235697" id="wx32">javascript</a> kennen uitsluitend associatieve arrays als container. In andere talen is het een van de mogelijke datastructuren die gebruikt kan worden. In <a href="/wnl/Java_%28programmeertaal%29" title="Java (programmeertaal)" wx:linktype="known" wx:pagename="Java_(programmeertaal)" wx:page_id="1470" id="wx33">Java</a> wordt standaard een klasse meegeleverd die deze functionaliteit biedt. In <a href="/wnl/Cplusplus" title="Cplusplus" wx:linktype="known" wx:pagename="Cplusplus" wx:page_id="340582" id="wx34">C++</a> wordt deze voorziening geleverd door de <a href="/wnl/STL" title="STL" wx:linktype="known" wx:pagename="STL" wx:page_id="346190" id="wx35">Standard Template Library</a>, maar ook <a href="/wnl/Microsoft" title="Microsoft" wx:linktype="known" wx:pagename="Microsoft" wx:page_id="1086" id="wx36">Microsoft</a> heeft dit in zijn <a href="/wnl/Microsoft_Foundation_Classes" title="Microsoft Foundation Classes" wx:linktype="known" wx:pagename="Microsoft_Foundation_Classes" wx:page_id="226642" id="wx37">MFC</a> zitten.</p>

<a id="Implementatie" name="Implementatie"/>
</wx:section><wx:section level="2" title="Implementatie" id="wxsec4"><h2 id="wx38">Implementatie</h2>

<p id="wx39">Een associatieve array kan op verschillende manieren geïmplementeerd worden. Hiervoor kan men bijvoorbeeld een <a href="/wnl/Hashtabel" title="Hashtabel" wx:linktype="known" wx:pagename="Hashtabel" wx:page_id="259038" id="wx40">hashtabel</a> gebruiken. Maar ook een gebalanceerde <a href="/wnl/Binaire_boom" title="Binaire boom" wx:linktype="known" wx:pagename="Binaire_boom" wx:page_id="113325" id="wx41">binaire boom</a> is een bruikbare onderliggende datastructuur.</p>
</wx:section></wx:section></div>
<div id="wx_categorylinks">
<a href="/wnl/index.php?title=Speciaal:Categories&amp;article=Associatieve_array" title="Speciaal:Categories" wx:linktype="known" wx:pagename="Speciaal:Categories" id="wx42">Categorieën</a>: <span dir="ltr" id="wx43"><a href="/wnl/Categorie:Programmeerconcept" title="Categorie:Programmeerconcept" wx:linktype="known" wx:pagename="Categorie:Programmeerconcept" wx:page_id="147769" id="wx44">Programmeerconcept</a></span> | <span dir="ltr" id="wx45"><a href="/wnl/Categorie:Datastructuur" title="Categorie:Datastructuur" wx:linktype="known" wx:pagename="Categorie:Datastructuur" wx:page_id="437264" id="wx46">Datastructuur</a></span></div>
<div id="wx_languagelinks">
in andere talen: <a href="http://cs.wikipedia.org/wiki/Asociativn%C3%AD_pole" class="external" wx:linktype="interwiki" wx:pagename="cs:Asociativní_pole" id="wx47">Česky</a> | <a href="http://de.wikipedia.org/wiki/Assoziatives_Array" class="external" wx:linktype="interwiki" wx:pagename="de:Assoziatives_Array" id="wx48">Deutsch</a> | <a href="http://en.wikipedia.org/wiki/Associative_array" class="external" wx:linktype="interwiki" wx:pagename="en:Associative_array" id="wx49">English</a> | <a href="http://fi.wikipedia.org/wiki/Hakurakenne" class="external" wx:linktype="interwiki" wx:pagename="fi:Hakurakenne" id="wx50">Suomi</a> | <a href="http://fr.wikipedia.org/wiki/Tableau_associatif" class="external" wx:linktype="interwiki" wx:pagename="fr:Tableau_associatif" id="wx51">Français</a> | <a href="http://ja.wikipedia.org/wiki/%E9%80%A3%E6%83%B3%E9%85%8D%E5%88%97" class="external" wx:linktype="interwiki" wx:pagename="ja:連想配列" id="wx52">日本語</a> | <a href="http://pl.wikipedia.org/wiki/Tablica_asocjacyjna" class="external" wx:linktype="interwiki" wx:pagename="pl:Tablica_asocjacyjna" id="wx53">Polski</a> | <a href="http://ru.wikipedia.org/wiki/%D0%90%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2" class="external" wx:linktype="interwiki" wx:pagename="ru:Ассоциативный_массив" id="wx54">Русский</a></div>
</body>
</html>
