Forskjell mellom arraylist og vektor

Anonim

Arraylist vs Vector

En arraylist kan ses som et dynamisk array som kan vokse i størrelse. På grunn av denne grunnen trenger programmereren ikke å vite størrelsen på arraylisten når han / hun definerer den. Vector kan også ses som en matrise som kan vokse i størrelse. Vektorer kan enkelt tildeles og kan brukes til når den nødvendige størrelsen på lagringen ikke er kjent før kjøretid.

Hva er en arraylist?

En arraylist kan ses som et dynamisk array, som kan vokse i størrelse. Derfor er arraylister ideelle for bruk i situasjoner der du ikke vet størrelsen på elementene som kreves ved utsagnstidspunktet. I Java kan arraylister bare holde objekter, de kan ikke holde primitive typer direkte (du kan sette de primitive typene inne i et objekt eller bruke wrappeklassene til de primitive typene). Generelt er arraylister forsynt med metoder for å utføre innsetting, sletting og søking. Tidskompleksiteten ved å få tilgang til et element er o (1), mens innsetting og sletting har en tidskompleksitet av o (n). I Java kan arraylister krysses ved hjelp av foreach-looper, iteratorer eller bare ved hjelp av indeksene. I Java ble arraylister introdusert fra versjon 1. 2 og det er en del av Java Collection Framework.

Hva er en vektor?

Vector er også en matrise som kan vokse i størrelse. Vektorer kan enkelt tildeles og kan brukes når den nødvendige størrelsen på lagringen ikke er kjent før kjøretid. Vektorer kan også bare holde objekter og kan ikke holde primitive typer. Vektorer er synkronisert, og kan derfor brukes trygt i multireglede miljøer. Vektorer er utstyrt med metoder for å legge til objekter, slette objekter og søke objekter. På samme måte som arraylist i java, kan vektorer krysses ved hjelp av foreaksløkker, iteratorer eller bare ved hjelp av indeksene. Når det gjelder Java, har vektorer blitt inkludert siden den første versjonen av Java.

Hva er forskjellen mellom Arraylist og Vector?

Selv om både arraylister og vektorer er svært lik dynamiske arrays som kan vokse i størrelse, har de noen viktige forskjeller. Hovedforskjellen mellom arraylister og vektorer er at vektorene er synkroniserte, mens arraylister er usynkroniserte. Derfor vil bruk av arraylister i multithreaded miljøer ikke være egnet, mens vektorer kan brukes trygt i multithreaded miljøer (siden de er trådsikker). Men synkronisering i vektorer vil føre til redusert ytelse. Derfor ville det ikke være en god ide å bruke vektorer i et gjenget miljø. Internt bruker både arraylister og vektorer arrays for å holde gjenstander. Når den nåværende plassen ikke er nok, vil vektorene doble størrelsen på den interne arraysen, mens arraylister øker størrelsen på dens interne array med 50%.Men ved bruk av både arraylister og vektorer, ved å gi en egnet innledende kapasitet, kan unødvendig resizing av det indre array unngås. I en situasjon som vekstraten av data er kjent, ville bruk av vektorer være mer egnet siden vektverdiene for vektorer kunne defineres.