Skip to main content

Vad är en ArrayList?

En ArrayList i datorprogrammering är en datastruktur som uppträder som en datoruppsättning men också implementerar förmågan att dynamiskt odla storleken på matrisen efter behov.Till skillnad från en inneboende matrisdatatyp, som inte kan ändras under programutförande, kan arrayliststrukturen växa och krympa storleken på matrisen som svar på tillägg eller borttagning av element.Den har en mycket gynnsam prestationsprofil, vilket möjliggör snabb slumpmässig åtkomst till datainsamlingen.Det finns emellertid två fall där det är långsammare än vissa andra datastrukturer, nämligen tillägg och borttagning av element från mitten av matrisen.De flesta objektorienterade programmeringsspråk har någon typ av implementering av en sådan lista, även om de ibland kallas dynamiska matriser.

Att använda en ArrayList ger ett program möjlighet att komma åt dataobjekt med ett indexnummer istället för att behöva gå igenomEn hel sekvens av data för att hitta en adress, som krävs med länkade listor.Med förmågan att öka storleken på matrisen efter behov är det ett mycket balanserat tillvägagångssätt som beaktar både flexibilitet och hastighet.Dessutom, när element tas bort från en sådan lista, reduceras storleken på matrisen och frigör minnesutrymmet.

En fördel med att använda en arrayList över vissa andra datastrukturer är att ett omslagsobjekt inte krävs för att innehålla data som ärlagrad.När det gäller en länkad lista eller en hashtabell behövs vanligtvis ett separat objekt för att upprätthålla den teknik som används för att hålla och manipulera samlingen.Med en ArrayList är den enda information som behövs om dataobjekten adressen till objektet i minnet.Detta innebär att det kommer att finnas mindre overhead -minnesanvändning när du arbetar med den här typen av lista.

Ett potentiellt problem med att använda en ArrayList kan komma från implementerings- och minneshanteringssystemet.De flesta matriser tilldelas som på varandra följande minnesplatser.Så för att använda en ArrayList av en viss storlek måste åtminstone det mycket minnet vara tillgängligt i en oavbruten sekvens av block.Den dynamiska arrayen kunde ändra storlek på sig flera gånger, så att minnesfragmentering kan uppstå och leda till ett minnesallokeringsfel, stoppning av programmet.Arrayen är inkapslad i ett objekt.Ett exempel där en dynamisk matris kan bromsa dramatiskt, beroende på implementering, är när storleken på matrisen måste ändras.Detta kan involvera att kopiera den aktuella matrisen till en ny matris som tilldelades den nya önskade storleken, vilket orsakar en tillfällig nedbrytning i prestanda.Samma problem kan upplevas när man lägger till eller tar bort ett element från mitten av listan, vilket gör att alla följande element måste flyttas till en ny plats.