1. ArrayList
klass
Idag ska vi utforska ArrayList
klassen. Detta är den första av flera klasser som kallas samlingar . I Java är samlingar ett så brett och användbart ämne att ett helt CodeGym-uppdrag ägnas åt dem.
För att till fullo förstå hur samlingar är uppbyggda och alla deras nyanser måste du först lära dig OOP, gränssnitt, arv, grunderna för multithreading och mycket mer.
Så idag ska vi bara bekanta oss med den enklaste sortens samling. Men på en tillräckligt djup nivå så att du förstår hur man använder den och hur den fungerar. Nu då, träffa ArrayList
samlingen .
Bakgrunden
Jag börjar med lite bakgrund. Programmerare gillade verkligen inte en aspekt av arrayer: det faktum att deras storlek inte kan ändras. Vad händer om du behöver lagra ytterligare tre element i en array, men det finns bara en tom cell?
Den enda lösningen på utrymmesbegränsningarna för en array var att skapa en mycket stor array för att rymma alla element du kan behöva lagra. Men detta var vanligtvis ett slöseri med minne. Om en array vanligtvis innehöll två eller tre element men det fanns till och med en liten chans att den skulle behöva lagra 100 av dem, då var det nödvändigt att skapa en array med kapacitet att lagra 100.
Så vad kom programmerare på? De skrev ArrayList
klassen, som gjorde samma arbete som Array
klassen, men som gick att ändra storlek på.
ArrayList klass
Namnet på ArrayList
klassen är bildat av två ord: Array + List. Array
är en array och List
är en lista.
Varje ArrayList
objekt innehåller en vanlig array av element. När du läser element från en ArrayList
, hämtar objektet dem från sin interna array. När du skriver element, skriver den dem till den interna arrayen.
Klassen ArrayList saknar alla nackdelar som arrayer har. Den vet hur man:
- Lagra element av en specifik typ
- Ändra storleken på listan dynamiskt
- Lägg till element i slutet av listan
- Infoga element i början eller mitten av listan
- Ta bort element var som helst i listan
För mer information, se nedan:
2. Skapa ett ArrayList
objekt
För att skapa ett ArrayList
objekt måste du skriva kod så här:
ArrayList<TypeParameter> name = new ArrayList<TypeParameter>();
Var ArrayList
är samlingstypen/klassen, TypeParameter
är typen av element som lagras i ArrayList
samlingen och name
är namnet på en ArrayList<TypeParameter>
variabel.
Variabeln name
har en generisk typ. Den består av två typer: typen av samlingen anges först, och sedan används vinkelparenteser för att indikera typen av element som lagras i samlingen.
Exempel:
Koda | Beskrivning |
---|---|
|
Lista över heltal |
|
Lista över strängar |
|
Lista över reella tal |
Till skillnad från arrayer kan samlingar inte lagra primitiva typer, bara referenstyper . Så om du behöver en samling int
s, använd Integer
omslagsklassen istället.
3. Operationer med enArrayList
Inledningsvis är längden på den nyskapade listan noll, eftersom den innehåller 0 element. Om du lägger till ett element i listan ökar dess längd med 1. Om du tar bort det tillagda elementet minskar längden tillbaka till noll.
Följande tabell kan lära dig mer om klassens metoder ArrayList
:
Metoder | Beskrivning |
---|---|
|
Lägger till det skickade elementet i listan |
|
Lägger till ett element till en specifik plats i listan. |
|
Returnerar elementet vars index ärindex |
|
Tilldelar value elementet vars index ärindex |
|
Tar bort elementet vars index är index . Returnerar det borttagna elementet. |
|
Tar bort elementet som du skickar till metoden. Om det finns mer än ett sådant element kommer det första att tas bort. |
|
Rensar listan, dvs tar bort alla element från listan. |
|
Kontrollerar om listan innehåller value . |
|
Kontrollerar om listan är tom eller inte. Med andra ord, om längden på listan är noll. |
|
Returnerar storleken på listan, dvs antalet element i listan. |
|
Returnerar en array som innehåller elementen i listan. Du måste skicka arrayen till metoden. |
Dessa metoder låter dig göra nästan allt du vill med listan: byta element, lägga till element och ta bort element. Du kan rensa listan med ett enda kommando, eller till och med konvertera listan till en array.
4. Jämförelse av ArrayList
ochArray
Jag tror inte att vi kan undvika att jämföra ArrayList
och en array.
Det finns bara 4 åtgärder du kan utföra med arrayer:
- Skapa en array
- Få ett element efter index
- Ställ in ett element efter index
- Få längden på arrayen
Här är dessa operationer som de gäller för en array och en ArrayList
:
Array | ArrayList |
---|---|
|
|
|
|
|
|
|
|
Låt oss jämföra hur en ArrayList
fungerar mot hur en array fungerar. Låt oss till exempel implementera denna uppgift: "läs 10 strängar från tangentbordet och visa dem på skärmen i omvänd ordning"
Använder Array | Använder ArrayList |
---|---|
|
|
Analogin är tydlig. Allt är på något sätt kortare och tydligare för arrayer. Men ArrayList
det är inte svårt heller: för att få ett element använder vi get()
metoden; att ändra ett element, set()
metoden; för att få längden på listan, size()
metoden.
Så varför använder programmerare ArrayList
klassen?
Hela poängen är naturligtvis alla andra metoder som vanliga arrayer inte har:
- Lägg till ett element i listan
- Lägg till ett element i mitten av listan
- Hitta ett element i listan
- Ta bort ett element från en lista
GO TO FULL VERSION