Arrays vs Arraylists
Arrays är den vanligaste datastrukturen för att lagra en samling element. De flesta programmeringsspråk tillhandahåller metoder för att enkelt deklarera matriser och komma åt element i matriserna. En arraylista kan ses som en dynamisk array som kan växa i storlek. Av denna anledning behöver programmeraren inte veta storleken på arraylistan när hon definierar den.
Vad är arrays?
Visad i figur 1 är en kod som vanligtvis används för att deklarera och tilldela värden till en matris. Figur 2 visar hur en matris skulle se ut i minnet.
värden [0] = 100; värden [1] = 101; värden [2] = 102; värden [3] = 103; värden [4] = 104; |
Figur 1: Kod för att deklarera och tilldela värden till en matris
100 | 101 | 102 | 103 | 104 |
Index: 0 | 1 | 2 | 3 | 4 |
Figur 2: Array lagrad i minnet
Ovanför koden definierar en array som kan lagra 5 heltal och de nås med hjälp av index 0 till 4. En viktig egenskap hos en array är att hela arrayen allokeras som ett enda minnesblock och varje element får sitt eget utrymme i arrayen. När en matris har definierats är dess storlek fixad. Så om du inte är säker på storleken på matrisen vid sammanställningstid, måste du definiera en tillräckligt stor matris för att vara på den säkra sidan. Men oftast kommer vi faktiskt att använda mindre antal element än vi har tilldelat. Så en stor mängd minne slösas faktiskt bort. Å andra sidan om "tillräckligt stor matris" inte är tillräckligt stor skulle programmet krascha.
Vad är Arraylists?
En arraylista kan ses som en dynamisk array som kan växa i storlek. Därför är arraylistor idealiska för att användas i situationer där du inte känner till storleken på de element som krävs vid tidpunkten för deklarationen. I Java kan arraylistor bara innehålla objekt, de kan inte innehålla primitiva typer direkt (du kan placera de primitiva typerna i ett objekt eller använda omslagsklasserna för de primitiva typerna). Generellt är arraylistor försedda med metoder för att utföra insättning, radering och sökning. Tidskomplexitet för åtkomst till ett element är o (1), medan insättning och radering har en tidskomplexitet av o (n). I Java kan arraylistor korsas med foreach-loopar, iteratorer eller helt enkelt med hjälp av indexen.
Vad är skillnaden mellan Arrays och Arraylists
Även om matriserna och arraylistorna är lika i den meningen att de båda används för att lagra samlingar av element skiljer de sig åt i hur de definieras. Storleken på arrayen måste anges när en array definieras, men du kan definiera en arraylist utan att känna till den faktiska storleken. Du kan lägga till element i en arraylista efter att den har definierats och detta är inte möjligt med arrays. Men i Java kan arraylists inte innehålla primitiva typer, men arrays kan användas för att hålla primitiva typer. Men om du behöver en datastruktur som kan variera storlek, skulle arraylist vara det bästa valet.