Forskel mellem arraylist og vektor

Anonim

Arraylist vs Vector

En arraylist kan ses som et dynamisk array, der kan vokse i størrelse. På grund af denne grund behøver programmøren ikke at vide størrelsen af ​​arraylisten, når han / hun definerer den. Vector kan også ses som en matrix, der kan vokse i størrelse. Vektorer kan let tildeles og kan bruges til, når den krævede størrelse af lageret ikke er kendt før runtime.

Hvad er en arraylist?

En arraylist kan ses som et dynamisk array, som kan vokse i størrelse. Derfor er arraylister ideelle til brug i situationer, hvor du ikke kender størrelsen af ​​de elementer, der kræves på tidspunktet for erklæringen. I Java kan arraylister kun holde objekter, de kan ikke holde primitive typer direkte (du kan sætte de primitive typer inde i et objekt eller bruge primitive typer wrappeklasser). Generelt er arraylister forsynet med metoder til at udføre indsættelse, sletning og søgning. Tidskompleksiteten ved at få adgang til et element er o (1), mens indsættelse og sletning har en tidskompleksitet af o (n). I Java kan arraylister krydses ved hjælp af foreach loops, iteratorer eller blot ved hjælp af indekserne. I Java blev arraylister introduceret fra version 1. 2 og det er en del af Java Collection Framework.

Hvad er en vektor?

Vector er også et array, der kan vokse i størrelse. Vektorer kan let tildeles og kan bruges, når den nødvendige størrelse af lageret ikke er kendt før runtime. Vektorer kan også kun holde genstande og kan ikke holde primitive typer. Vektorer er synkroniserede og kan derfor bruges sikkert i multithreaded miljøer. Vektorer er forsynet med metoder til at tilføje objekter, slette objekter og søge objekter. På samme måde som arraylist i java kan vektorer krydses ved hjælp af foreach loops, iteratorer eller blot ved hjælp af indekserne. Når det kommer til Java, er vektorer blevet medtaget siden den første version af Java.

Hvad er forskellen mellem Arraylist og Vector?

Selvom både arraylisterne og vektorerne ligner meget dynamiske arrays, der kan vokse i størrelse, har de nogle vigtige forskelle. Hovedforskellen mellem arraylister og vektorer er, at vektorerne er synkroniserede, mens arraylister er usynkroniserede. Derfor vil anvendelse af arraylister i multithreaded miljøer ikke være egnet, mens vektorer kan bruges sikkert i multithreaded miljøer (da de er trådsikker). Men synkronisering i vektorer vil medføre en reduktion i ydeevnen. Derfor ville det ikke være en god idé at bruge vektorer i et enkelt gevindmiljø. Internt bruger både arraylister og vektorer arrays til at holde objekter. Når det nuværende rum ikke er nok, vil vektorer fordoble størrelsen af ​​dets interne array, mens arraylister øger størrelsen af ​​dens interne array med 50%.Men når man bruger både arraylisterne og vektorerne ved at give en passende indledende kapacitet, kan unødvendig resizing af det indre array undgås. I en situation, hvor væksthastigheden af ​​data er kendt, ville anvendelse af vektorer være mere hensigtsmæssig, da vektorens inkrementelle værdi kunne defineres.