Arrays vs Arraylists
Arrays zijn de meest gebruikte gegevensstructuur om een verzameling elementen op te slaan. De meeste programmeertalen bieden methoden voor het eenvoudig declareren van arrays en toegangselementen in de arrays. Een arraylist kan worden gezien als een dynamische array, die in omvang kan groeien. Om deze reden hoeft de programmeur niet de grootte van de arraylist te kennen wanneer deze deze definieert.
Wat zijn arrays?
Getoond in figuur 1 is een stukje code dat typisch wordt gebruikt om waarden aan een array te declareren en toe te wijzen. Figuur 2 geeft weer hoe een array eruit zou zien in het geheugen.
int-waarden [5]; waarden [0] = 100; waarden [1] = 101; waarden [2] = 102; waarden [3] = 103; waarden [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: Matrix opgeslagen in het geheugen
Bovenstaande code definieert een array die 5 gehele getallen kan opslaan en deze wordt benaderd met behulp van indices 0 tot 4. Een belangrijke eigenschap van een array is dat volledige array wordt toegewezen als een enkel geheugenblok en elk element zijn eigen ruimte in de array krijgt . Zodra een array is gedefinieerd, is de grootte ervan vastgesteld. Dus als je niet zeker bent over de grootte van de array tijdens het compileren, zou je een array moeten definiëren die groot genoeg is om veilig te zijn. Maar meestal gaan we minder elementen gebruiken dan we hebben toegewezen. Dus een aanzienlijke hoeveelheid geheugen is eigenlijk verspild. Aan de andere kant crasht het programma als de "groot genoeg array" niet groot genoeg is.
Wat zijn Arraylists?
Een arraylist kan worden gezien als een dynamische array, die in omvang kan groeien. Daarom zijn arraylists ideaal om te gebruiken in een situatie waarin u niet weet hoe groot de elementen zijn die vereist zijn op het moment van de declaratie. In Java kunnen arcadylists alleen objecten bevatten, ze kunnen primitieve typen niet direct vasthouden (je kunt de primitieve typen in een object plaatsen of de wrapperklassen van de primitieve typen gebruiken). Over het algemeen worden arraylists voorzien van methoden om insertie, verwijdering en zoeken uit te voeren. De tijdcomplexiteit van toegang tot een element is o (1), terwijl invoegen en verwijderen een tijdcomplexiteit van o (n) heeft. In Java kunnen arraylists worden doorlopen met behulp van 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 beide worden gebruikt om verzamelingen elementen op te slaan, verschillen ze in hoe ze worden gedefinieerd. De grootte van de array moet worden opgegeven wanneer een array is gedefinieerd, maar u kunt een arraylist definiëren zonder de werkelijke grootte te kennen. U kunt elementen toevoegen aan een arraylist nadat deze is gedefinieerd en dit is niet mogelijk met arrays. Maar in Java kunnen arcadylists geen primitieve typen bevatten, maar arrays kunnen worden gebruikt om primitieve typen vast te houden. Maar als u een datastructuur nodig heeft die van grootte kan verschillen, zou arraylist de beste keuze zijn.