Arrays versus arraylists
Arrays zijn de meest gebruikte gegevensstructuur om een verzameling elementen op te slaan. De meeste programmeertalen bieden methoden om arrays eenvoudig te declareren en toegang te krijgen tot elementen in de arrays. Een arraylist kan worden gezien als een dynamische array, die in omvang kan toenemen. Om deze reden hoeft de programmeur de grootte van de arraylist niet te weten wanneer ze deze definieert.
Wat zijn arrays?
Getoond in figuur 1, is een stukje code dat doorgaans wordt gebruikt om waarden aan een array te declareren en toe te wijzen. Figuur 2 laat zien hoe een array eruit zou zien in het geheugen.
waarden [0] = 100; waarden [1] = 101; waarden [2] = 102; waarden [3] = 103; waarden [4] = 104; |
Afbeelding 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
De bovenstaande code definieert een array die 5 gehele getallen kan opslaan en deze worden benaderd met behulp van indices 0 tot 4. Een belangrijke eigenschap van een array is dat de hele array wordt toegewezen als een enkel geheugenblok en dat elk element zijn eigen ruimte in de array krijgt.. Zodra een array is gedefinieerd, staat de grootte ervan vast. Dus als u niet zeker weet hoe groot de array tijdens het compileren is, moet u een array definiëren die groot genoeg is om veilig te zijn. 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 "groot genoeg array" niet echt groot genoeg is, crasht het programma.
Wat zijn arraylists?
Een arraylist kan worden gezien als een dynamische array, die in omvang kan toenemen. Daarom zijn arraylists ideaal om te gebruiken in situaties waarin u de grootte van de vereiste elementen op het moment van aangifte niet weet. In Java kunnen arraylists alleen objecten bevatten, ze kunnen niet rechtstreeks primitieve typen bevatten (u kunt de primitieve typen in een object plaatsen of de wrapper-klassen van de primitieve typen gebruiken). Over het algemeen worden arraylists voorzien van methoden om invoegen, verwijderen en zoeken uit te voeren. Tijdscomplexiteit van toegang tot een element is o (1), terwijl invoegen en verwijderen een tijdcomplexiteit heeft van o (n). In Java kunnen arraylists worden doorlopen met foreach loops, iterators of gewoon met behulp van de indexen.
Wat is het verschil tussen arrays en arraylists
Hoewel de arrays en arraylists vergelijkbaar zijn in de zin dat ze allebei worden gebruikt om verzamelingen elementen op te slaan, verschillen ze in hoe ze zijn gedefinieerd. De grootte van de array moet worden opgegeven wanneer een array wordt gedefinieerd, maar u kunt een arraylist definiëren zonder de werkelijke grootte te kennen. U kunt elementen aan een arraylist toevoegen nadat deze is gedefinieerd en dit is niet mogelijk met arrays. Maar in Java kunnen arraylists geen primitieve typen bevatten, maar arrays kunnen worden gebruikt om primitieve typen vast te houden. Maar als u een datastructuur nodig heeft die qua grootte kan variëren, is arraylist de beste keuze.