For faster navigation, this Iframe is preloading the Wikiwand page for Verzameling (informatica).

Verzameling (informatica)

Uit Wikipedia, de vrije encyclopedie

Een verzameling (Engels: set) is een datacontainer die geïnspireerd is op een verzameling zoals de wiskunde die kent.

Een verzameling bestaat uit een hoeveelheid unieke leden (eng: members). Algemener (voor alle containers) heten de leden ook wel elementen of items.

Een verzameling lijkt op een bag, maar in een bag hoeven de elementen niet uniek te zijn.

Uitleg

Er zijn formeel twee volkomen verschillende soorten verzamelingen. Een bitarray en een container. Een bitarray wordt toegepast als de mogelijke waarden van tevoren bekend zijn en dit aantal waarden niet al te groot wordt. De container-vorm kan gebruikt worden voor een verzameling van objecten, en heet ook wel een collection.

De manier waarop de taal Pascal een SET implementeert is een voorbeeld van een bitarray.

Een verzameling zoals de wiskunde die definieert is ongeordend, maar de implementatie binnen programmeertalen heeft door de aard van computers altijd een interne ordening. Meestal is dit in de programmeursinterface terug te vinden doordat er een manier bestaat om de leden van de verzameling op te sommen.

Operaties

Een verzameling in een programmeertaal kent diverse operaties. De declaraties van deze functies zijn (in pseudocode):

Verzameling.Bevat(ElementType): BOOLEAN		// test op lidmaatschap van element
Verzameling.Bevat(Verzameling): BOOLEAN		// test of het argument omsloten wordt
Verzameling.operator+(ElementType): Verzameling	// geeft de verzameling plus het element
Verzameling.operator+(Verzameling): Verzameling	// geeft de vereniging van twee verzamelingen
Verzameling.operator-(ElementType): Verzameling	// geeft de verzameling minus het element
Verzameling.operator-(Verzameling): Verzameling	// geeft de doorsnede van twee verzamelingen
Verzameling.operator=(ElementType)		// toewijzing, maakt de verzameling leeg behalve één element
Verzameling.operator=(Verzameling)		// toewijzing, kopieert de verzameling
Verzameling.VoegToe(ElementType)		// Plus-operatie met toewijzing 
Verzameling.VoegToe(Verzameling)		// Plus-operatie met toewijzing
Verzameling.Verwijder(ElementType)		// Min-operatie met toewijzing
Verzameling.Verwijder(Verzameling)		// Min-operatie met toewijzing

Daarnaast is er vaak een manier om de leden van de verzameling op te sommen, al dan niet met behulp van een iterator.

Ook aan de objecten die in een verzameling opgenomen kunnen worden, worden minimale eisen gesteld. Om te beginnen moeten ze een methode definiëren om te bepalen of twee objecten gelijk zijn. In Java is de equals() methode hiervoor voor de hand liggende keuze. In C++ zou je hiervoor operator==() kunnen kiezen. Dit is theoretisch voldoende om een object in een verzameling op te kunnen nemen, maar om een en ander efficiënt te kunnen implementeren moeten deze objecten minstens ook een hash() methode bevatten óf een methode die een ordening aangeeft tussen twee objecten.

Voorbeelden van gebruik

Het gebruik van een bitarray zou er zo uit kunnen zien:

// voorbeeld 1, verzameling gebaseerd op een bitarray
ENUM kleur (groen, blauw, geel)
FUNCTION meng(mengsel: BITARRAY<kleur>): kleur
   IF mengsel.Bevat(geel) AND mengsel.Bevat(blauw) THEN
      RETURN groen
   ENDIF
ENDFUN

VARIABELE verfmengsel= NEW BITARRAY<kleur>
verfmengsel= blauw
verfmengsel.VoegToe(geel)
PRINT meng(verfmengsel)

Het gebruik van een verzameling die gebaseerd is op een container zou er zo uit kunnen zien. Om het voorbeeld kort te houden is wederom gekozen voor niet OO-code en als lid van de verzameling is om dezelfde reden het type string gekozen.

// voorbeeld 2, verzameling gebaseerd op een container
FUNCTION meng(mengsel: OBJECTVERZAMELING<string>): string
   IF mengsel.Bevat("blauw") AND mengsel.Bevat("geel") THEN
      RETURN "groen"
   ENDIF
ENDFUN

VARIABELE verfmengsel= NEW OBJECTVERZAMELING<string>
verfmengsel= "blauw"
verfmengsel.VoegToe("geel")
PRINT meng(verfmengsel)

Eigenlijk is het tweede voorbeeld bijna gelijk aan het eerste behalve dat het type 'kleur' vervangen is door het type 'string'. Dit is echter wel een essentieel verschil omdat aan de laatste verzameling elke denkbare string toegevoegd zou kunnen worden, terwijl de eerste slechts met de gedefinieerde kleuren kan werken. Het eerste voorbeeld heeft een sterkere typecontrole, het tweede is flexibeler. Het eerste voorbeeld produceert minder code en executeert sneller.

{{bottomLinkPreText}} {{bottomLinkText}}
Verzameling (informatica)
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Wikiwand 2.0 is here 🎉! We've made some exciting updates - No worries, you can always revert later on