Erinevus ArrayListi ja vektori vahel

ArrayList vs Vector

Vektor rakendab massiive, mis võivad käitusel kasvada / kahaneda, kui sellele lisatakse või eemaldatakse mõned elemendid. Selle elementidele pääseb juurde täisarvu abil. Vektorväljasalvestuse haldamist iseloomustavad kaks välja - maht ja mahu juurdekasv. See rakendab nelja liidest:
* Loend
* Juhuslik juurdepääs
* Kloonitav
* Serialiseeritavad liidesed

ArrayList, nagu ka vektorid, juurutab ka neli liidest. Nagu vektorid, võib ka selle suurus jooksuajal muutuda. Samuti on sellel väljal nimega maht, mille suurus on sama suur kui ArrayListi suurus.

Mõlemad vektorid ja ArrayList on sobivad elementide leidmiseks mis tahes positsioonist ning elementide lisamiseks või kustutamiseks konteineri klassi lõpust.
API vaatenurgast on nii vektorid kui ka ArrayList väga sarnased. Niisiis, milles täpselt on erinevus nende kahe vahel? Järgmised punktid valgustavad seda küsimust:

1. Sünkroonimine: vektorid on sünkroonitud, kuid ArrayList seda pole. Kui lisate või kustutate elemente ArrayList, nimetatakse seda struktuurimuudatusteks. Kui mitu lõime pääseb ArrayListi juurde samaaegselt loendit muutva koodiplokiga, tuleb see loend väliselt sünkroonida. Lühidalt öeldes on vektorite sisu niidikindel, ArrayListi oma aga mitte. Kui nõue ei maini niidikindlat kogumist, tuleks valida ArrayList, kuna sünkroonimine saavutab jõudluse. Sünkroonimata massiiviloendid on kiired.

2. Andmete kasv: nii ArrayList kui ka vektorielemendid salvestatakse massiividena, kuid vektorite vaikesuurus on 10 ja ArrayListil puudub vaikesuurus. Kui element lisatakse ArrayListi või vektorisse, on tõenäoline, et kumbki klass võib ruumist otsa saada. Sellisel juhul kahekordistab vektor oma suuruse, samal ajal kui ArrayList suurus suureneb 50%. Saate määrata vektorite juurdekasvu väärtuse, mis pole ArrayListi jaoks võimalik.

3. Elementide läbimine: ArrayListi eeliseks on siin see, et selle elementidele pääsete juurde lihtsalt indeksi abil. Vektorite puhul peate selle elementide läbimiseks looma iteraatori.

Kokkuvõte:

1.Kui konteineriklassi tuleb muuta ühe lõime või mõne kohaliku muutujaga, peaksite kasutama ArrayList.
2.Kui konteineriklassile pääseb juurde mitme keermega, kasutage vektoreid, vastasel juhul peate käsitsi sünkroonima.
3.Suuruse suurust saame täpsustada vektori ja ArrayListi abil.
4.vektor on sünkroniseeritud ja ArrayList mitte.
5.vektor võib suurust kahekordistada; ArrayList saab seda suurendada 50%.