Arrays vs Arraylists
Arrays er den mest almindeligt anvendte datastruktur til at gemme en samling af elementer. De fleste programmeringssprog giver metoder til nemt at erklære arrays og få adgang til elementer i arrays. En arraylist kan ses som en dynamisk array, som kan vokse i størrelse. Af denne grund behøver programmøren ikke at kende størrelsen af arraylisten, når hun definerer den.
Hvad er arrays?
vist i figur 1, er et stykke kode, der typisk bruges til at erklære og tildele værdier til en matrix. Figur 2 viser, hvordan et array ville se ud i hukommelsen.
int-værdier[5]; values[0]=100; values[1]=101; values[2]=102; values[3]=103; values[4]=104; |
Figur 1: Kode til at deklarere og tildele værdier til en matrix
100 | 101 | 102 | 103 | 104 |
Indeks: 0 | 1 | 2 | 3 | 4 |
Figur 2: Array gemt i hukommelsen
Over kode definerer en matrix, der kan gemme 5 heltal, og de tilgås ved hjælp af indeks 0 til 4. En vigtig egenskab ved en matrix er, at hele matrixen er allokeret som en enkelt hukommelsesblok, og hvert element får sin eget rum i arrayet. Når en matrix er defineret, er dens størrelse fast. Så hvis du ikke er sikker på størrelsen af arrayet på kompileringstidspunktet, skal du definere et stort nok array til at være på den sikre side. Men de fleste gange kommer vi faktisk til at bruge mindre antal elementer, end vi har tildelt. Så en betydelig mængde hukommelse er faktisk spildt. På den anden side, hvis det "store nok array" faktisk ikke er stort nok, ville programmet gå ned.
Hvad er Arraylists?
En arrayliste kan ses som en dynamisk array, der kan vokse i størrelse. Derfor er arraylists ideelle til at blive brugt i situationer, hvor du ikke kender størrelsen af de nødvendige elementer på deklarationstidspunktet. I Java kan arraylists kun indeholde objekter, de kan ikke indeholde primitive typer direkte (du kan placere de primitive typer inde i et objekt eller bruge de primitive typers wrapper-klasser). Generelt er arraylister forsynet med metoder til at udføre indsættelse, sletning og søgning. Tidskompleksiteten ved adgang til et element er o(1), mens indsættelse og sletning har en tidskompleksitet på o(n). I Java kan arraylists gennemløbes ved at bruge foreach loops, iteratorer eller blot ved at bruge indekserne.
Hvad er forskellen mellem Arrays og Arraylists
Selv om arrays og arraylisterne er ens i den forstand, at de begge bruges til at gemme samlinger af elementer, er de forskellige i, hvordan de er defineret. Størrelsen af arrayet skal angives, når et array er defineret, men du kan definere en arrayliste uden at kende den faktiske størrelse. Du kan tilføje elementer til en arrayliste, efter at den er defineret, og dette er ikke muligt med arrays. Men i Java kan arraylister ikke indeholde primitive typer, men arrays kan bruges til at holde primitive typer. Men hvis du har brug for en datastruktur, der kan variere dens størrelse, ville arraylist være det bedste valg.