Arrays vs Arraylists
Arrays er den mest brukte datastrukturen for å lagre en samling elementer. De fleste programmeringsspråk gir metoder for å enkelt deklarere matriser og få tilgang til elementer i matriser. En matriste kan sees på som en dynamisk matrise som kan vokse i størrelse. Av denne grunn trenger ikke programmereren å 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 å erklære og tildele verdier til en matrise. Figur 2 viser hvordan en matrise vil se ut i minnet.
verdier [0] = 100; verdier [1] = 101; verdier [2] = 102; verdier [3] = 103; verdier [4] = 104; |
Figur 1: Kode for å deklarere og tilordne verdier til en matrise
100 | 101 | 102 | 103 | 104 |
Indeks: 0 | 1 | 2 | 3 | 4 |
Figur 2: Array lagret i minnet
Ovenfor kode definerer en matrise som kan lagre 5 heltall, og de får tilgang til ved hjelp av indeksene 0 til 4. En viktig egenskap for en matrise er at hele matrisen tildeles som en enkelt minneblokk og hvert element får sin egen plass i matrisen. Når en matrise er definert, blir størrelsen løst. Så hvis du ikke er sikker på størrelsen på matrisen ved kompileringstid, må du definere en stor nok matrise til å være på den sikre siden. Men som oftest skal vi faktisk bruke færre antall elementer enn vi har tildelt. Så en betydelig mengde minne er faktisk bortkastet. På den annen side hvis "stort nok array" faktisk ikke er stort nok, vil programmet krasje.
Hva er Arraylists?
En matriste kan sees på som en dynamisk matrise som kan vokse i størrelse. Derfor er arraylister ideelle for bruk i situasjoner der du ikke vet størrelsen på elementene som kreves på erklæringstidspunktet. I Java kan arraylister bare holde objekter, de kan ikke holde primitive typer direkte (du kan plassere de primitive typene i et objekt eller bruke omslagsklassene til de primitive typene). Generelt er arraylister utstyrt med metoder for å utføre innsetting, sletting og søk. Tidskompleksitet for tilgang til et element er o (1), mens innsetting og sletting har en tidskompleksitet på o (n). I Java kan arraylister krysses ved hjelp av foreach-løkker, iteratorer eller bare ved å bruke indeksene.
Hva er forskjellen mellom Arrays og Arraylists
Selv om matriser og arraylister er like i den forstand at begge brukes til å lagre samlinger av elementer, er de forskjellige i hvordan de defineres. Størrelsen på matrisen må oppgis når en matrise er definert, men du kan definere en matriseliste uten å vite den faktiske størrelsen. Du kan legge til elementer i en arrayliste etter at den er definert, og dette er ikke mulig med arrays. Men i Java kan arraylister ikke ha primitive typer, men arrays kan brukes til å holde primitive typer. Men hvis du trenger en datastruktur som kan variere størrelsen, vil arraylist være det beste valget.