Arraylist vs Vector
En arrayliste kan ses som en dynamisk array, der kan vokse i størrelse. Af denne grund behøver programmøren ikke at kende størrelsen af arraylisten, når han/hun definerer den. Vektor kan også ses som et array, der kan vokse i størrelse. Vektorer kan nemt allokeres og kan bruges til, når den nødvendige størrelse af lageret ikke kendes før runtime.
Hvad er en Arraylist?
En arrayliste kan ses som en dynamisk array, der kan vokse i størrelse. Derfor er arraylists ideelle til at blive brugt i situationer, hvor du ikke kender størrelsen af de nødvendige elementer på deklarationstidspunktet. I Java kan arraylists kun indeholde objekter, de kan ikke indeholde primitive typer direkte (du kan placere de primitive typer inde i et objekt eller bruge de primitive typers wrapper-klasser). Generelt er arraylister forsynet med metoder til at udføre indsættelse, sletning og søgning. Tidskompleksiteten ved adgang til et element er o(1), mens indsættelse og sletning har en tidskompleksitet på o(n). I Java kan arraylister krydses ved hjælp af foreach loops, iteratorer eller blot ved at bruge indekserne. I Java blev arraylists introduceret fra version 1.2, og det er en del af Java Collections Framework.
Hvad er en vektor?
Vector er også et array, der kan vokse i størrelse. Vektorer kan let allokeres og kan bruges, når den nødvendige størrelse af lageret ikke er kendt før runtime. Vektorer kan også kun indeholde objekter og kan ikke indeholde primitive typer. Vektorer er synkroniserede og kan derfor bruges sikkert i flertrådede miljøer. Vektorer er forsynet med metoder til at tilføje objekter, slette objekter og søge efter objekter. I lighed med arraylist i java kan vektorer krydses ved hjælp af foreach loops, iteratorer eller blot ved at bruge indekserne. Når det kommer til Java, er vektorer blevet inkluderet siden den første version af Java.
Hvad er forskellen mellem Arraylist og Vector?
Selv om både arraylisterne og vektorerne minder meget om dynamiske arrays, der kan vokse i størrelse, har de nogle vigtige forskelle. Den største forskel mellem arraylister og vektorer er, at vektorerne er synkroniserede, mens arraylister er usynkroniserede. Derfor vil brug af arraylister i multitrådede miljøer ikke være egnet, mens vektorer kan bruges sikkert i multitrådede miljøer (da de er trådsikre). Men synkronisering i vektorer ville forårsage en reduktion i ydeevnen. Derfor ville det ikke være en god idé at bruge vektorer i et enkelt trådet miljø. Internt bruger både arraylister og vektorer arrays til at holde objekter. Når den aktuelle plads ikke er nok, vil vektorer fordoble størrelsen af dens interne array, mens arraylister øger størrelsen af dens interne array med 50 %. Men når du bruger både arraylisterne og vektorerne, ved at give en passende initial kapacitet, kan unødvendig ændring af størrelsen af det interne array undgås. I en situation, hvor datavæksthastigheden er kendt, ville brug af vektorer være mere egnet, da den trinvise værdi af vektorer kunne defineres.