1. ArrayList
klasse
I dag skal vi udforske ArrayList
klassen. Dette er den første af flere klasser kendt som samlinger . I Java er samlinger et så bredt og nyttigt emne, at en hel CodeGym-quest er afsat til dem.
For fuldt ud at forstå, hvordan samlinger er struktureret og alle deres nuancer, skal du først lære OOP, grænseflader, arv, det grundlæggende i multithreading og meget mere.
Så i dag skal vi lige stifte bekendtskab med den enkleste form for samling. Men på et dybt nok niveau, så du forstår, hvordan du bruger det, og hvordan det virker. Mød nu ArrayList
samlingen .
Baghistorien
Jeg starter med lidt baggrund. Programmører kunne virkelig ikke lide ét aspekt af arrays: det faktum, at deres størrelse ikke kan ændres. Hvad hvis du har brug for at gemme tre elementer mere i et array, men der kun er én tom celle?
Den eneste løsning på pladsbegrænsningerne for et array var at skabe et meget stort array for at kunne rumme alle de elementer, du måtte have brug for at gemme. Men dette var normalt spild af hukommelse. Hvis et array normalt indeholdt to eller tre elementer, men der var endda en lille chance for, at det skulle gemme 100 af dem, så var det nødvendigt at oprette et array med kapacitet til at gemme 100.
Så hvad fandt programmører på? De skrev ArrayList
klassen, som udførte det samme arbejde som Array
klassen, men der kunne ændres størrelse.
ArrayList klasse
Klassens navn ArrayList
er dannet af to ord: Array + List. Array
er en matrix og List
er en liste.
Hvert ArrayList
objekt indeholder et almindeligt array af elementer. Når du læser elementer fra en ArrayList
, henter objektet dem fra dets interne array. Når du skriver elementer, skriver den dem til det interne array.
ArrayList-klassen mangler alle de ulemper, som arrays har. Den ved hvordan man:
- Gem elementer af en bestemt type
- Ændr dynamisk størrelsen på listen
- Tilføj elementer til slutningen af listen
- Indsæt elementer i begyndelsen eller midten af listen
- Fjern elementer fra et hvilket som helst sted på listen
For flere detaljer, se nedenfor:
2. Oprettelse af et ArrayList
objekt
For at oprette et ArrayList
objekt skal du skrive kode som denne:
ArrayList<TypeParameter> name = new ArrayList<TypeParameter>();
Hvor ArrayList
er samlingstypen/-klassen, TypeParameter
er typen af de elementer, der er gemt i ArrayList
samlingen, og name
er navnet på en ArrayList<TypeParameter>
variabel.
Variablen name
har en generisk type. Den består af to typer: samlingens type angives først, og derefter bruges vinkelparenteser til at angive typen af de elementer, der er gemt i samlingen.
Eksempler:
Kode | Beskrivelse |
---|---|
|
Liste over heltal |
|
Liste over strenge |
|
Liste over reelle tal |
I modsætning til arrays kan samlinger ikke gemme primitive typer, kun referencetyper . Så hvis du har brug for en samling af int
s, så brug Integer
indpakningsklassen i stedet.
3. Operationer med enArrayList
Til at begynde med er længden af den nyoprettede liste nul, da den indeholder 0 elementer. Hvis du tilføjer et element til listen, øges dets længde med 1. Hvis du fjerner det tilføjede element, falder længden tilbage til nul.
Følgende tabel kan lære dig mere om klassens metoder ArrayList
:
Metoder | Beskrivelse |
---|---|
|
Tilføjer det beståede element til listen |
|
Tilføjer et element til en bestemt placering på listen. |
|
Returnerer det element, hvis indeks erindex |
|
Tildeler value til det element, hvis indeks erindex |
|
Fjerner det element, hvis indeks er index . Returnerer det fjernede element. |
|
Fjerner det element, du overfører til metoden. Hvis der er mere end ét sådant element, vil det første blive fjernet. |
|
Rydder listen, dvs. fjerner alle elementer fra listen. |
|
Kontrollerer om listen indeholder value . |
|
Kontrollerer, om listen er tom eller ej. Med andre ord, om længden af listen er nul. |
|
Returnerer størrelsen på listen, dvs. antallet af elementer på listen. |
|
Returnerer en matrix, der indeholder elementerne i listen. Du skal videregive arrayet til metoden. |
Disse metoder lader dig gøre næsten alt, hvad du måtte ønske med listen: bytte elementer, tilføje elementer og fjerne elementer. Du kan rydde listen med en enkelt kommando eller endda konvertere listen til en matrix.
4. Sammenligning af ArrayList
ogArray
Jeg tror ikke, vi kan undgå at sammenligne ArrayList
og en række.
Der er kun 4 handlinger, du kan udføre med arrays:
- Opret et array
- Få et element efter indeks
- Indstil et element efter indeks
- Få længden af arrayet
Her er disse operationer, som de gælder for en matrix og en ArrayList
:
Array | ArrayList |
---|---|
|
|
|
|
|
|
|
|
Lad os sammenligne, hvordan en ArrayList
fungerer versus, hvordan en matrix fungerer. Lad os for eksempel implementere denne opgave: "læs 10 strenge fra tastaturet og vis dem på skærmen i omvendt rækkefølge"
Brug af Array | Brug af ArrayList |
---|---|
|
|
Analogien er klar. Alt er på en eller anden måde kortere og klarere for arrays. Men det ArrayList
er heller ikke svært: For at få et element bruger vi metoden get()
; at ændre et element, set()
metoden; for at få listens længde, metoden size()
.
Så hvorfor bruger programmører klassen ArrayList
?
Hele pointen er selvfølgelig alle de andre metoder, som almindelige arrays ikke har:
- Tilføj et element til listen
- Tilføj et element til midten af listen
- Find et element på listen
- Fjernelse af et element fra en liste
GO TO FULL VERSION