Arraylist vs Vector
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 han / hon definierar den. Vector kan också ses som en matris som kan växa i storlek. Vektorer kan enkelt tilldelas och kan användas till när den erforderliga storleken på lagringen inte är känd förrän runtime.
Vad är en arraylist??
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. I Java introducerades arraylister från version 1.2 och det ingår i Java Collection Framework.
Vad är en vektor?
Vektor är också en matris som kan växa i storlek. Vektorer kan enkelt tilldelas och kan användas när den erforderliga storleken på lagringen inte är känd förrän körtiden. Vektorer kan också bara hålla föremål och kan inte hålla primitiva typer. Vektorer är synkroniserade, därför kan de användas säkert i multithreaded miljöer. Vektorer är försedda med metoder för att lägga till objekt, radera objekt och söka objekt. På samma sätt som arraylisten i java kan vektorerna korsas med hjälp av foreach-slingor, iteratorer eller helt enkelt använda indexen. När det gäller Java har vektorer inkluderats sedan den första versionen av Java.
Vad är skillnaden mellan arraylist och vektor?
Trots att både arraylisterna och vektorerna liknar dynamiska arrays som kan växa i storlek, har de några viktiga skillnader. Huvudskillnaden mellan arraylister och vektorer är att vektorerna synkroniseras medan arraylister är osynkroniserade. Därför är det inte lämpligt att använda arraylister i multithreaded miljöer, medan vektorer kan användas säkert i multithreaded miljöer (eftersom de är trådsäkra). Men synkronisering i vektorer skulle leda till en minskning av prestanda. Därför är det inte en bra idé att använda vektorer i en enda gängad miljö. Internt använder både arraylister och vektorer arrays för att hålla föremål. När det aktuella utrymmet inte räcker, kommer vektorerna att fördubbla storleken på dess interna array, medan arraylister ökar storleken på dess interna array med 50%. Men när man använder både arraylisterna och vektorerna, genom att ge en lämplig initial kapacitet, kan onödig resizing av den interna matrisen undvikas. I en situation som tillväxten av data är känd, skulle användning av vektorer vara mer lämplig eftersom vektorens inkrementella värde skulle kunna definieras.