Arrays vs Arraylists
Arrays er den mest brukte datastrukturen for å lagre en samling av elementer. De fleste programmeringsspråk gir metoder for enkelt å deklarere arrayer og tilgangselementer i arrays. En arraylist kan ses som et dynamisk array, som kan vokse i størrelse. På grunn av dette, trenger programmereren ikke å vite størrelsen på arraylisten når hun definerer den.
Hva er Arrays?
Vist i figur 1, er et stykke kode som vanligvis brukes til å deklarere og tilordne verdier til en matrise. Figur 2 viser hvordan en matrise vil se ut i minnet.
int verdier [5]; verdier [0] = 100; Verdiene [1] = 101; Verdiene [2] = 102; Verdiene [3] = 103; Verdiene [4] = 104; |
Figur 1: Kode for å deklarere og tildele verdier til en matrise
100 | 101 | 102 | 103 | 104 |
Indeks: 0 | 1 | 2 | 3 | 4 |
Figur 2: Array lagret i minnet
Over koden definerer en matrise som kan lagre 5 heltall, og de nås ved hjelp av indeksene 0 til 4. En viktig egenskap i en matrise er at hele matrisen er allokert som en enkelt blokk av minne, og hvert element får sin egen plass i matrisen . Når et array er definert, er størrelsen fast. Så hvis du ikke er sikker på størrelsen på arrayet på kompileringstid, må du definere et stort nok array for å være i den sikre siden. Men de fleste ganger vil vi faktisk bruke mindre antall elementer enn vi har tildelt. Så en betydelig mengde minne er faktisk bortkastet. På den annen side dersom programmet "stort nok" ikke er stort nok, vil programmet krasje.
Hva er arraylister?
En arraylist kan ses som et dynamisk array, som kan vokse i størrelse. Derfor er arraylister ideelle for bruk i situasjoner der du ikke vet størrelsen på elementene som kreves ved utsagnstidspunktet. I Java kan arraylister bare holde objekter, de kan ikke holde primitive typer direkte (du kan sette de primitive typene inne i et objekt eller bruke wrappeklassene til de primitive typene). Generelt er arraylister forsynt med metoder for å utføre innsetting, sletting og søking. Tidskompleksiteten ved å få tilgang til et element er o (1), mens innsetting og sletting har en tidskompleksitet av o (n). I Java kan arraylister krysses ved hjelp av foreach-looper, iteratorer eller bare ved hjelp av indeksene.
Hva er forskjellen mellom Arrays og Arraylists
Selv om arraylister og arraylister er like i den forstand at begge er vant til å lagre samlinger av elementer, varierer de i hvordan de er definert. Størrelsen på arrayet må gis når en array er definert, men du kan definere en arraylist uten å vite den faktiske størrelsen. Du kan legge til elementer til en arraylist etter at den er definert, og dette er ikke mulig med arrays. Men i Java kan arraylister ikke holde primitive typer, men arrays kan brukes til å holde primitive typer. Men hvis du trenger en datastruktur som kan variere størrelsen, ville arraylist være det beste valget.