Programmeren in Java/Collections: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Bdijkstra (overleg | bijdragen)
→‎Eigen collectie: AbstractList
Bdijkstra (overleg | bijdragen)
een Collection bevat in eerste instantie referenties, niet objecten; + andere tweaks
Regel 1:
{{Programmeren in Java|Deel=Collections}}
Een '''collectie''' is een verzameling van referenties naar objecten (geen primitieve datatypeswaarden) die:
*zijn eigen grootte beheert (er moethoeft zelfs geen begin-grootte opgegeven worden), dit is in tegenstelling tot arrays.
*een rijke verzameling methoden bezit om elementen toe te voegen, te verwijderen, te sorteren, op te zoeken, ...
 
== Soorten interfaces ==
* De ''Collection'' -interface die een verzameling van objectenreferenties bevat. Deze interface wordt op zichtzich geïmplementeerd door drie andere interfaces:
** ''List'' is een opeenvolging van elementen, dubbelsdubbelingen mogen: ArrayList
** ''Set'' met objecten zonder duplicaten: HashSet, LinkedHashSet, TreeSet
** ''Queue'' is een hoop elementen die eruitgehaalder uitgehaald worden in de omgekeerde volgorde van het toevoegen (FIFO: first in, first out); de queue-interface bevat extra methods om elementen toe te voegen en weg te halen: LinkedList, PriorityQueue
* De ''Map'' -interface die de elementen identificeerttoegankelijk aanmaakt devia handaparte van een (unieke sleutel,overeenkomstige waarde)-paarsleutelobjecten, zoals bij een [[w:hashtabel|hashtabel]]: HashMap, LinkedHashMap
 
==Voorbeeld==
Onderstaande is een kort voorbeeld van het gebruik van een ''ArrayList'', wat een implementieimplementatie is van de ''List'' -interface.
 
<syntaxhighlight lang="java" line>
Regel 27:
</syntaxhighlight>
 
In dit voorbeeld gebruiken we dehet sleutelwoord ''import'' sleutel woord om de ''ArrayList'' toe te voegen. Op lijnregel 5 declareren we een ''ArrayList'' aan en geven we mee tussen de haakjes (<>) dat deze enkel ''Strings'' mag bevatten, na het =-teken makken we de ''ArrayList'' aan zoals we dat doen bij andere objecten. In lijnregel 6 wordt er een ''String'' aangemaakt die in lijnregel 7 toegevoegd word aan de ''ArrayList''. In lijnregel 8 wordt die er terug uitgehaald en uitgeprint.
 
===Niet generisch===
Sinds de introductie van [[Programmeren in Java/Generics|generische klassen]] in Java 1.5 is het mogelijk om te bepalen welke type klassesklassen een collectie of map kanmag bevatten. Voordien was dit niet mogelijk en werdenkon objectenje zoalsniet bijvoorbeeldaangeven stringswat alsvoor soort objecten bewaartworden bewaard in de collectie. HierdoorDoor gingdeze verlorenontbrekende van welk type klasse een object was eninformatie was het aan de programmeur om dit teelementen terug te casten in de juiste klasse als het bijvoorbeeld methodes van die specifieke klasse wilt gebruiken. Ook betekende dit als je bijvoorbeeld een collectie of map wou hebben met enkel objecten van het type ''Strings''
 
== Collection ==
Deze interface is de hoofdinterface binnen de hele hiërarchie van de collection -interfaces. Een collection bevat een groep van objecten, ook wel elementen genoemd. Sommige collections laten duplicaten toe, andere dan weer niet. Sommige zijn dan weer geordend, andere niet. StandaardDe heeftstandaard Java-bibliotheek heeft geen enkele collectioncollectionklasse die deze interface rechtstreeks implementeert. Deze interface wordt op zichtzich geïmplementeerd doorvia drie andere interfaces, namelijk ''List'', ''Set'' en ''Queue''. Die worden op zich geïmplementeerd door echte collections of doorvia andere interfaces.
 
[[File:Java collection interfaces.svg|400px|center]]
 
Deze interface bevat ondereonder andere volgende methodes:
* <kbd>add(E e)</kbd>: Voegt één element toe aan de collectie.
* <kbd>addAll(Collection<? extends E> c)</kbd>: Voegt de elementen van de gegeven collectie toe aan de collectie.
* <kbd>clear()</kbd>: Verwijdert alle elementen uit een collectie. Enkel uit de collectie, het object zelf wordt niet verwijderd zolang het ergens anders nog wordt bijgehouden bijvoorbeeld in een variabele of een andere collectie.
* <kbd>contains(Object o)</kbd>: Kijkt of de collectie een bepaald object bevat, geeft ''true'' terug als dat zo is.
* <kbd>containsAll(Collection<?> c)</kbd>: Kijkt of de collectie alle elementen bevat die zich in de meegegeven collectie bevind, geeft ''true'' terug als dat zo is.
* <kbd>isEmpty()</kbd>: Geeft ''true'' terug als de collectie leeg is (nul elementen bevat).
* <kbd>iterator()</kbd>: Geeft een iterator terug vanover deze collectie.
* <kbd>remove(Object o)</kbd>: Verwijdert het gegeven object uit de collectie.
* <kbd>removeAll(Collection<?> c)</kbd>: Verwijdert alle elementen uit de collectie die ook bestaan in de gegeven collectie.
* <kbd>retainAll(Collection<?> c)</kbd>: Verwijdert alle elementen uit de collectie die niet aanwezig zijn in de gegeven collectie.
* <kbd>size()</kbd>: Geeft terug hoeveel elementen de collectie bevat.
* <kbd>toArray()</kbd>: Geeft een array terug datdie de elementen bevat van de collectie.
* <kbd>toArray(T[] a)</kbd>: Geeft een array terug datdie de elementen bevat van de collectie, met het verschil dat de array het datatype heeft van de meegegeven array.
 
===List===
Binnen een ''List'' kunnen elementen in een bepaalde volgorde worden geplaatst en kunnen net zoals bij een ''array'' worden opgehaald door middel van een index nummer. In tegenstelling tot een ''Set'' mag een ''List'' hetzelfde object meerdere keren bevatten. Het heeft volgende standaard implementaties in de package ''java.util'' package van Java:
* ArrayList
* LinkedList
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.