Hva er en ArrayList?
En ArrayList i dataprogrammering er en datastruktur som oppfører seg som en datamaskiner, men som også implementerer muligheten til å dynamisk vokse størrelsen på matrisen etter behov. I motsetning til en iboende datatype, som ikke kan endres under utførelse av program, kan arrayliststrukturen vokse og krympe størrelsen på matrisen som svar på tillegg eller sletting av elementer. Den har en veldig gunstig ytelsesprofil, noe som gir rask tilfeldig tilgang til datainnsamlingen. Det er imidlertid to tilfeller der det er tregere enn noen andre datastrukturer, nemlig tillegg og fjerning av elementer fra midten av matrisen. De fleste objektorienterte programmeringsspråk har en form for implementering av en slik liste, selv om de noen ganger kalles dynamiske matriser.
Bruke en ArrayList gir et program muligheten til å få tilgang til dataobjekter med et indeksnummer øyeblikkelig i stedet for å måtte gå gjennom en hel sekvens av data for å finne en adresse, noe som er kraved med koblede lister. Med muligheten til å øke størrelsen på matrisen etter behov, er det en veldig balansert tilnærming som vurderer både fleksibilitet og hastighet. I tillegg, når elementer fjernes fra en slik liste, reduseres størrelsen på matrisen, og frigjør minneområdet.
En fordel med å bruke en ArrayList over noen andre datastrukturer er at et innpakningsobjekt ikke er pålagt å inneholde dataene som blir lagret. Når det gjelder en koblet liste eller en hasjtabell, er det vanligvis nødvendig med et eget objekt for å opprettholde teknikken som brukes til å holde og manipulere samlingen. Med en ArrayList er den eneste informasjonen som trengs om dataobjektene, adressen til objektet i minnet. Dette betyr at det vil være mindre overheadminnebruk når du jobber med denne typen liste.
Et potensielt problem med bruk av en ArrayList kan komme fra implementerings- og minnestyringssystemet. De fleste matriser er ALlokalisert som påfølgende minneplasser. Så for å bruke en arraylist av en viss størrelse, må i det minste så mye minne være tilgjengelig i en uavbrutt sekvens av blokker. Den dynamiske matrisen kan endre størrelse på seg selv flere ganger, slik at minnefragmentering kan oppstå og føre til en minnetallokeringssvikt, og stanse programutførelse.
Ytelsen til en ArrayList ligner på å bruke en standard matrise, selv om tilgangstidene er litt tregere fordi matrisen er innkapslet i et objekt. En forekomst der en dynamisk matrise kan bremse dramatisk, avhengig av implementering, er når størrelsen på matrisen må endres. Dette kan innebære å kopiere den nåværende matrisen til en ny matrise som ble tildelt den nye ønsket størrelse, noe som forårsaker en midlertidig nedbrytning i ytelsen. Det samme problemet kan oppleves når du legger til eller fjerner et element fra midten av listen, noe som fører til at alle følgende elementer må flyttes til et nytt sted.