Arrays versus arraylijsten
Arrays zijn de meest gebruikte gegevensstructuur om een verzameling elementen op te slaan. De meeste programmeertalen bieden methoden om eenvoudig arrays te declareren en toegang te krijgen tot elementen in de arrays. Een arraylist kan worden gezien als een dynamische array, die in omvang kan groeien. Om deze reden hoeft de programmeur de grootte van de arraylist niet te kennen wanneer ze deze definieert.
Wat zijn arrays?
Getoond in figuur 1 is een stukje code dat doorgaans wordt gebruikt om waarden te declareren en toe te wijzen aan een array. Afbeelding 2 laat zien hoe een array eruit zou zien in het geheugen.
int waarden[5]; values[0]=100; values[1]=101; values[2]=102; values[3]=103; values[4]=104; |
Figuur 1: Code voor het declareren en toewijzen van waarden aan een array
100 | 101 | 102 | 103 | 104 |
Index: 0 | 1 | 2 | 3 | 4 |
Figuur 2: Array opgeslagen in het geheugen
Bovenstaande code, definieert een array die 5 gehele getallen kan opslaan en ze zijn toegankelijk met indices 0 tot 4. Een belangrijke eigenschap van een array is dat de hele array wordt toegewezen als een enkel geheugenblok en elk element krijgt zijn eigen ruimte in de array. Zodra een array is gedefinieerd, ligt de grootte vast. Dus als u niet zeker bent over de grootte van de array tijdens het compileren, moet u een array definiëren die groot genoeg is om aan de veilige kant te blijven. Maar meestal gaan we minder elementen gebruiken dan we hebben toegewezen. Er wordt dus een aanzienlijke hoeveelheid geheugen verspild. Aan de andere kant, als de "matrix groot genoeg" niet echt groot genoeg is, zou het programma crashen.
Wat zijn arraylijsten?
Een arraylist kan worden gezien als een dynamische array, die in omvang kan groeien. Daarom zijn arraylists ideaal om te gebruiken in situaties waarin u de grootte van de vereiste elementen op het moment van declaratie niet weet. In Java kunnen arraylijsten alleen objecten bevatten, ze kunnen primitieve typen niet rechtstreeks bevatten (u kunt de primitieve typen in een object plaatsen of de wrapper-klassen van de primitieve typen gebruiken). Over het algemeen zijn arraylists voorzien van methoden om invoeging, verwijdering en zoeken uit te voeren. De tijdscomplexiteit van toegang tot een element is o(1), terwijl invoegen en verwijderen een tijdscomplexiteit heeft van o(n). In Java kunnen arraylijsten worden doorlopen met behulp van foreach-lussen, iterators of gewoon met behulp van de indexen.
Wat is het verschil tussen arrays en arraylijsten
Hoewel de arrays en arraylijsten vergelijkbaar zijn in de zin dat ze beide worden gebruikt om verzamelingen elementen op te slaan, verschillen ze in de manier waarop ze zijn gedefinieerd. De grootte van de array moet worden opgegeven wanneer een array wordt gedefinieerd, maar je kunt een arraylijst definiëren zonder de werkelijke grootte te kennen. U kunt elementen aan een arraylijst toevoegen nadat deze is gedefinieerd en dit is niet mogelijk met arrays. Maar in Java kunnen arraylijsten geen primitieve typen bevatten, maar arrays kunnen worden gebruikt om primitieve typen te bevatten. Maar als u een gegevensstructuur nodig heeft die in grootte kan variëren, is arraylist de beste keuze.