Wat is een dynamische array?
Een dynamische array is een gegevensstructuur die wordt gebruikt bij computerprogrammering en die meerdere computerobjecten als een enkele groep bevat en die naar wens kan worden aangepast aan verschillende aantallen objecten. De groep wordt vastgehouden in één aaneengesloten geheugenblok, zodat toegang tot elementen efficiënt en snel is. Dynamische arrays worden ook vectoren of lijsten genoemd, afhankelijk van de computertaal waarin ze worden gebruikt. Ondanks deze namen is een bepaalde lijst of vector mogelijk geen dynamische array, omdat lijsten en vectoren anders dan arrays en van elkaar kunnen worden geïmplementeerd.
C ++ bevat een enkele dynamische matrixklasse genaamd vector, die zich bevindt in een groep klassen die de standaardsjabloonbibliotheek wordt genoemd. De array die deze klasse ondersteunt, is toegankelijk voor iterators of indexen. Het vermogen om op verzoek het formaat aan te passen is een groot voordeel, maar het kan programmeurs in een vals gevoel van veiligheid lokken omdat het niet zo robuust is als het lijkt. De dynamische array die een vector ondersteunt, kan niet garanderen dat toegangsverzoeken geldig zijn. Net als statische arrays, kunnen dynamische arrays grenzen controleren en problemen met geheugenbeschadiging veroorzaken als een programma probeert toegang te krijgen tot geheugen dat niet aan hen is toegewezen.
Java bevat drie verschillende dynamische array-klassen: Vector, ArrayList en CopyOnWriteArrayList. Elementen in de array zijn alleen toegankelijk voor indexen en het proberen om toegang te krijgen tot indexen buiten de array veroorzaakt meestal geen geheugenbeschadiging. De Java Vector-klasse is ongeveer gelijk aan de C ++ vector-klasse en is niet gesynchroniseerd om toegang door meerdere threads mogelijk te maken. ArrayList en CopyOnWriteArrayList zijn daarentegen beide thread-safe. Van de drie is CopyOnWriteArrayList de meest arbeidsintensieve klasse, omdat het de dynamische array volledig opnieuw maakt telkens wanneer een nieuwe waarde naar de array wordt geschreven.
Dynamische arrays worden in wezen op dezelfde manier geïmplementeerd, ongeacht de betreffende computertaal, maar afhankelijk van een bepaalde taal kunnen er andere mogelijkheden op worden gebouwd. Net als statische arrays beperken dynamische arrays niet het type object dat erin kan worden opgeslagen, zolang ze allemaal van hetzelfde type object zijn. Een programmeur hoeft nooit rechtstreeks toegang te hebben tot een dynamische array; het kan altijd worden gedaan via een klasse die de array omwikkelt voor eenvoudig gebruik. Correct gebruik van deze arrays kan een programmeur helpen bij het organiseren van gegevens in de code, en ook bij het maken van begrijpelijke code die zich leent voor eenvoudig onderhoud.