Forskjellen mellom ArrayList og Vector

ArrayList vs Vector

En vektor implementerer arrays som kan vokse / krympe ved kjøring når enkelte elementer legges til eller fjernes fra det. Dens elementer er tilgjengelig ved hjelp av en helhetsindeks. To felt - kapasitets- og kapasitetsøkning, karakteriserer vektorlagringshåndteringen. Den implementerer fire grensesnitt:
* Liste
* Tilfeldig tilgang
* Cloneable
* Serialiserbare grensesnitt

ArrayList, akkurat som vektorer, implementerer også fire grensesnitt. Igjen, som vektorer, kan størrelsen endres under kjøretid. Det har også et felt som heter kapasitet hvis størrelse er så stor som størrelsen på ArrayList.

Både vektorer og ArrayList er gode for å hente elementer fra en hvilken som helst posisjon og også for å sette inn eller slette elementer fra slutten av beholderklassen.
Fra API-perspektivet er både vektorer og ArrayList veldig like. Så hvor ligger nøyaktig forskjellen mellom de to? Følgende punkter vil kaste litt lys på denne saken:

1. Synkronisering: Vektorer er synkronisert, men ArrayList er ikke. Hvis du legger til eller sletter elementer fra en ArrayList, refereres det til som strukturell modifikasjon. Når flere tråder får tilgang til en ArrayList samtidig med en blokk med kode som endrer listen, må man synkronisere listen eksternt. Kort sagt, vektorinnhold er trådsikkert mens ArrayList er ikke. Hvis kravet ikke nevner trålsikker samling, bør man velge ArrayList som synkronisering treffer ytelse. Ikke-synkroniserte ArrayLists er raske.

2. Datavekst: Både ArrayList og vektorelementer lagres som arrayer, men vektorer har en standardstørrelse på 10, og ArrayList har ingen standardstørrelse. Når man legger til et element til enten en ArrayList eller vektor, er det en sjanse for at en eller annen klasse kan gå tom for plass. I et slikt tilfelle dobler en vektor sin størrelse som standard, mens størrelsen på ArrayList øker med 50%. Du kan angi en stigningsverdi for vektorer som ikke er mulig for ArrayList.

3. Traversering av elementene: ArrayList har en fordel her som du kan få tilgang til elementene ved ganske enkelt å bruke en indeks. Når det gjelder vektorer, må du opprette en iterator for å krysse dens elementer.

Sammendrag:

1. Hvis containerklassen skal endres med en enkelt tråd eller en lokal variabel, bør du bruke en ArrayList.
2. Når containerklassen nås av flere tråder, bruk vektorer ellers må man gjøre manuell synkronisering.
3.Vi kan spesifisere stigningsstørrelsen med vektoren og med ArrayList kan vi ikke.
4. En vektor er synkronisert og en ArrayList er ikke.
5.A vektor kan øke størrelsen med dobbelt; ArrayList kan øke det med 50%.