Forskellen mellem ArrayList og Vector

ArrayList vs Vector

En vektor implementerer matriser, der kan vokse / krympe ved kørsel, når nogle elementer tilføjes eller fjernes fra det. Dets elementer fås ved hjælp af et heltalindeks. To felter - kapacitet og kapacitetsforøgelse, karakteriserer styring af vektorlagring. Det implementerer fire grænseflader:
* Liste
* Tilfældig adgang
* Klonbar
* Serialiserbare grænseflader

ArrayList implementerer ligesom vektorer også fire grænseflader. I lighed med vektorer kan dens størrelse ændres i løbet af runtime. Det har også et felt kaldet kapacitet, hvis størrelse er lige så stor som ArrayList-størrelsen.

Både vektorer og ArrayList er gode til at hente elementer fra enhver position og også til at indsætte eller slette elementer fra slutningen af ​​containerklassen.
Fra API-perspektivet er både vektorer såvel som ArrayList meget ens. Så hvor ligger præcis forskellen mellem de to? Følgende punkter vil kaste lys over denne sag:

1. Synkronisering: Vektorer synkroniseres, men ArrayList er det ikke. Hvis du tilføjer eller sletter elementer fra en ArrayList, kaldes det strukturel ændring. Når flere tråde får adgang til en ArrayList samtidig med en kodeblok, der ændrer listen, skal man eksternt synkronisere listen. Kort sagt, vektorindhold er tråd-sikkert, mens ArrayList ikke er det. Hvis kravet ikke nævner tråd-sikker samling, bør man vælge ArrayList, da synkronisering rammer ydeevne. Ikke-synkroniserede ArrayLists er hurtige.

2. Datavækst: Både ArrayList og vektorelementer gemmes som arrays, men vektorer har en standardstørrelse på 10, og ArrayList har ingen standardstørrelse. Når man tilføjer et element til enten en ArrayList eller vektor, er der en chance for, at begge klasser kan løbe tør for rummet. I et sådant tilfælde fordobler en Vector som standard sin størrelse, mens ArrayList-størrelsen øges med 50%. Du kan indstille en forøgelsesværdi for vektorer, der ikke er muligt for ArrayList.

3. Gennemse elementerne: ArrayList har en fordel her, da du kan få adgang til dens elementer ved blot at bruge et indeks. I tilfælde af vektorer skal du oprette en iterator, der krydser dens elementer.

Resumé:

1.Hvis beholderklassen skal ændres af en enkelt tråd eller en lokal variabel, skal du bruge en ArrayList.
2.Når du får adgang til beholderklassen af ​​flere tråde, skal du bruge vektorer, ellers bliver du nødt til at foretage manuel synkronisering.
3.Vi kan specificere stigningsstørrelsen med vektoren og med ArrayList kan vi ikke.
4. En vektor synkroniseres, og en ArrayList er det ikke.
5. En vektor kan øge størrelsen med dobbelt; ArrayList kan øge det med 50%.