Arraylist vs Vector
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 han / hon definierar den. Vektor kan också ses som en matris som kan växa i storlek. Vektorer kan enkelt tilldelas och kan användas när den önskade storleken på lagring inte är känd förrän körtid.
Vad är en Arraylist?
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. I Java introducerades arraylistor från version 1.2 och det är en del av Java Collections Framework.
Vad är en vektor?
Vector är också en matris som kan växa i storlek. Vektorer kan enkelt fördelas och kan användas när den önskade storleken på lagringen inte är känd förrän körtid. Vektorer kan också bara hålla objekt och kan inte innehå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 objekt. På samma sätt som arraylist i java kan vektorer korsas med foreach-loopar, iteratorer eller helt enkelt med hjälp av indexen. När det gäller Java har vektorer inkluderats sedan den första versionen av Java.
Vad är skillnaden mellan Arraylist och Vector?
Även om både matrislistor och vektorer liknar dynamiska matriser 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 minskad prestanda. Därför skulle det inte vara en bra idé att använda vektorer i en enda gängad miljö. Internt använder både arraylistor och vektorer arrays för att hålla objekt. När det nuvarande utrymmet inte räcker fördubblar vektorerna storleken på dess interna array, medan arraylistor ökar storleken på dess interna array med 50%. Men när du 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 tillväxthastighet för data är känd skulle användning av vektorer vara mer lämplig eftersom det inkrementella värdet av vektorer kunde definieras.