Arraylist vs Vector
En arraylist kan ses som en dynamisk array som kan växa i storlek. På grund av denna anledning behöver programmeraren inte veta storleken på arraylistan när han/hon definierar den. Vektor kan också ses som en array som kan växa i storlek. Vektorer kan enkelt allokeras och kan användas när den nödvändiga storleken på lagringen inte är känd förrän vid körning.
Vad är en Arraylist?
En arraylist kan ses som en dynamisk array som kan växa i storlek. Därför är arraylistor idealiska att användas i situationer där du inte vet storleken på de element som krävs vid tidpunkten för deklarationen. I Java kan arraylistor bara innehålla objekt, de kan inte hålla primitiva typer direkt (du kan placera de primitiva typerna inuti ett objekt eller använda omslagsklasserna för de primitiva typerna). Generellt är arraylistor försedda med metoder för att utföra infogning, radering och sökning. Tidskomplexiteten för att komma åt ett element är o(1), medan insättning och radering har en tidskomplexitet på o(n). I Java kan arraylistor passeras med hjälp av foreach loops, iteratorer eller helt enkelt med hjälp av indexen. I Java introducerades arraylists från version 1.2 och det är en del av Java Collections Framework.
Vad är en vektor?
Vector är också en array som kan växa i storlek. Vektorer kan enkelt allokeras och kan användas när den erforderliga storleken på lagringen inte är känd förrän vid körning. Vektorer kan också bara hålla objekt och kan inte hålla primitiva typer. Vektorer är synkroniserade och kan därför användas säkert i flertrådade miljöer. Vektorer är försedda med metoder för att lägga till objekt, ta bort objekt och söka efter objekt. I likhet med arraylist i java kan vektorer korsas med hjälp av foreach loopar, iteratorer eller helt enkelt med hjälp av indexen. När det kommer till Java har vektorer inkluderats sedan den första versionen av Java.
Vad är skillnaden mellan Arraylist och Vector?
Även om både arraylistorna och vektorerna är väldigt lika dynamiska arrayer som kan växa i storlek, har de några viktiga skillnader. Huvudskillnaden mellan arraylistor och vektorer är att vektorerna är synkroniserade medan arraylistor är osynkroniserade. Därför är det inte lämpligt att använda arraylistor i flertrådade miljöer, medan vektorer kan användas säkert i flertrådade miljöer (eftersom de är trådsäkra). Men synkronisering i vektorer skulle orsaka en minskning av prestanda. Därför skulle det inte vara en bra idé att använda vektorer i en enda trådad miljö. Internt använder både arraylistor och vektorer arrayer för att hålla objekt. När det aktuella utrymmet inte räcker till kommer vektorer att fördubbla storleken på dess interna array, medan arraylistor ökar storleken på dess interna array med 50 %. Men när man använder både arraylistor och vektorer, genom att ge en lämplig initial kapacitet, kan onödig storleksändring av den interna arrayen undvikas. I en situation där datatillväxthastigheten är känd, skulle det vara lämpligare att använda vektorer eftersom det inkrementella värdet för vektorer skulle kunna definieras.