Arrays vs Arraylists
Arrays är den vanligaste datastrukturen för att lagra en samling av element. De flesta programmeringsspråk ger metoder för att enkelt deklarera arrayer och åtkomstelement i arraysna. En arraylist kan ses som en dynamisk uppsättning som kan växa i storlek. På grund av denna anledning behöver programmeraren inte veta storleken på arraylisten när hon definierar den.
Vad är Arrays?
Visad i figur 1 är ett kodstycke som vanligtvis används för att deklarera och tilldela värden till en array. Figur 2 visar hur en array skulle se ut i minnet.
int värden [5]; 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 array
100 | 101 | 102 | 103 | 104 |
Index: 0 | 1 | 2 | 3 | 4 |
Figur 2: Array lagrad i minnet
Ovanstående kod definierar en array som kan lagra 5 heltal och de nås med index 0 till 4. En viktig egenskap hos en array är att hela arrayen allokeras som ett enda block av minne och varje element får sitt eget utrymme i arrayen . När en array är definierad, är dess storlek fixerad. Så om du inte är säker på storleken på matrisen vid sammanställningstiden måste du definiera en tillräckligt stor matris för att vara i den säkra sidan. Men de flesta gånger brukar vi använda mindre antal element än vad vi har tilldelat. Så en stor mängd minne är faktiskt bortkastat. Å andra sidan om "tillräckligt stor matris" inte är tillräckligt stor nog skulle programmet krascha.
Vad är arraylister?
En arraylist kan ses som en dynamisk uppsättning som kan växa i storlek. Därför är arraylister idealiska 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 arraylister bara hålla objekt, de kan inte hålla primitiva typer direkt (du kan lägga de primitiva typerna inuti ett objekt eller använda primitiva typer av omslagsklasser). Generellt är arraylister försedda med metoder för att utföra införande, radering och sökning. Tidskomplexiteten att få tillgång till ett element är o (1), medan införande och radering har en tidskomplexitet av o (n). I Java kan arraylister kryssas genom att använda förloppsslingor, iteratorer eller helt enkelt använda indexen.
Vad är skillnaden mellan arrays och arraylister
Trots att arrayserna och arraylisterna är lika i den meningen att de båda används för att lagra samlingar av element, skiljer de sig från hur de definieras. Storleken på matrisen måste ges när en array är definierad, men du kan definiera en arraylist utan att veta den faktiska storleken. Du kan lägga till element i en arraylist efter att den har definierats och det är inte möjligt med arrays. Men i Java kan arraylister inte hå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 sin storlek, skulle arraylisten vara det bästa valet.