1. ArrayList
klasse
I dag skal vi utforske ArrayList
klassen. Dette er den første av flere klasser kjent som samlinger . I Java er samlinger et så bredt og nyttig emne at et helt CodeGym-oppdrag er viet til dem.
For å fullt ut forstå hvordan samlinger er strukturert og alle deres nyanser, må du først lære OOP, grensesnitt, arv, det grunnleggende om multithreading og mye mer.
Så i dag skal vi bare bli kjent med den enkleste typen samling. Men på et dypt nok nivå slik at du forstår hvordan du bruker det og hvordan det fungerer. Nå da, møt ArrayList
samlingen .
Bakgrunnen
Jeg starter med litt bakgrunn. Programmerere likte virkelig ikke ett aspekt ved arrays: det faktum at størrelsen deres ikke kan endres. Hva om du trenger å lagre tre elementer til i en matrise, men det er bare én tom celle?
Den eneste løsningen på plassbegrensningene til en matrise var å lage en veldig stor matrise for å få plass til alle elementene du måtte trenge å lagre. Men dette var vanligvis bortkastet minne. Hvis en matrise vanligvis inneholdt to eller tre elementer, men det var til og med en liten sjanse for at den måtte lagre 100 av dem, var det nødvendig å lage en matrise med kapasitet til å lagre 100.
Så hva kom programmerere på? De skrev ArrayList
klassen, som gjorde det samme arbeidet som Array
klassen, men som kunne endre størrelsen.
ArrayList klasse
Navnet på ArrayList
klassen er dannet av to ord: Array + List. Array
er en matrise og List
er en liste.
Hvert ArrayList
objekt inneholder en vanlig rekke elementer. Når du leser elementer fra en ArrayList
, henter objektet dem fra sin interne matrise. Når du skriver elementer, skriver den dem til den interne matrisen.
ArrayList-klassen mangler alle ulempene som arrays har. Den vet hvordan:
- Lagre elementer av en bestemt type
- Endre størrelsen på listen dynamisk
- Legg til elementer på slutten av listen
- Sett inn elementer i begynnelsen eller midten av listen
- Fjern elementer fra hvor som helst i listen
For mer informasjon, se nedenfor:
2. Opprette et ArrayList
objekt
For å lage et ArrayList
objekt, må du skrive kode slik:
ArrayList<TypeParameter> name = new ArrayList<TypeParameter>();
Hvor ArrayList
er samlingstypen/-klassen, TypeParameter
er typen av elementene som er lagret i ArrayList
samlingen, og name
er navnet på en ArrayList<TypeParameter>
variabel.
Variabelen name
har en generisk type. Den består av to typer: samlingens type angis først, og deretter brukes vinkelparenteser for å indikere typen av elementene som er lagret i samlingen.
Eksempler:
Kode | Beskrivelse |
---|---|
|
Liste over heltall |
|
Liste over strenger |
|
Liste over reelle tall |
I motsetning til matriser kan ikke samlinger lagre primitive typer, bare referansetyper . Så hvis du trenger en samling av int
s, bruk Integer
wrapper-klassen i stedet.
3. Operasjoner med enArrayList
I utgangspunktet er lengden på den nyopprettede listen null, siden den inneholder 0 elementer. Hvis du legger til ett element i listen, øker lengden med 1. Hvis du fjerner det tilføyde elementet, reduseres lengden tilbake til null.
Følgende tabell kan lære deg mer om metodene i ArrayList
klassen:
Metoder | Beskrivelse |
---|---|
|
Legger det beståtte elementet til listen |
|
Legger til et element til en bestemt plassering i listen. |
|
Returnerer elementet hvis indeks erindex |
|
Tilordner value til elementet hvis indeks erindex |
|
Fjerner elementet hvis indeks er index . Returnerer det fjernede elementet. |
|
Fjerner elementet du sender til metoden. Hvis det er mer enn ett slikt element, vil det første bli fjernet. |
|
Tømmer listen, dvs. fjerner alle elementer fra listen. |
|
Sjekker om listen inneholder value . |
|
Sjekker om listen er tom eller ikke. Med andre ord, om lengden på listen er null. |
|
Returnerer størrelsen på listen, dvs. antall elementer i listen. |
|
Returnerer en matrise som inneholder elementene i listen. Du må sende arrayet til metoden. |
Disse metodene lar deg gjøre nesten alt du måtte ønske med listen: bytte elementer, legge til elementer og fjerne elementer. Du kan tømme listen med en enkelt kommando, eller til og med konvertere listen til en matrise.
4. Sammenligning av ArrayList
ogArray
Jeg tror ikke vi kan unngå å sammenligne ArrayList
og en rekke.
Det er bare 4 handlinger du kan utføre med matriser:
- Lag en matrise
- Få et element etter indeks
- Sett et element etter indeks
- Få lengden på matrisen
Her er disse operasjonene som de gjelder for en matrise og en ArrayList
:
Array | ArrayList |
---|---|
|
|
|
|
|
|
|
|
La oss sammenligne hvordan en ArrayList
fungerer mot hvordan en matrise fungerer. La oss for eksempel implementere denne oppgaven: "les 10 strenger fra tastaturet og vis dem på skjermen i omvendt rekkefølge"
Bruker Array | Bruker ArrayList |
---|---|
|
|
Analogien er klar. Alt er på en eller annen måte kortere og klarere for arrays. Men ArrayList
er ikke vanskelig heller: for å få et element bruker vi get()
metoden; å endre et element, set()
metoden; for å få lengden på listen, metoden size()
.
Så hvorfor bruker programmerere ArrayList
klassen?
Hele poenget er selvfølgelig alle de andre metodene som vanlige arrays ikke har:
- Legg til et element i listen
- Legg til et element i midten av listen
- Finn et element i listen
- Fjerne et element fra en liste
GO TO FULL VERSION