Razlika između ArrayLista i Vektora

ArrayList vs Vector

Vektor implementira nizove koji mogu rasti / smanjiti se za vrijeme izvođenja kada se iz njega dodaju ili uklone neki elementi. Njegovim se elementima pristupa pomoću cijelog indeksa. Dva polja - povećanje kapaciteta i kapaciteta, karakteriziraju upravljanje vektorskim spremištem. Provodi četiri sučelja:
* Popis
* Nasumični pristup
* Cloneable
* Provjeriva sučelja

ArrayList, baš kao i vektori, također implementira četiri sučelja. Opet, poput vektora, i njegova se veličina može mijenjati tijekom izvođenja. Također, ima polje koje se naziva kapacitet čija je veličina jednaka veličini ArrayLista.

I vektori i ArrayList dobri su za dohvaćanje elemenata iz bilo kojeg položaja, kao i za umetanje ili brisanje elemenata s kraja klase spremnika.
Iz perspektive API-ja, i vektori i ArrayList vrlo su slični. Pa gdje točno leži razlika između njih dvoje? Sljedeće točke će osvijetliti ovo pitanje:

1. Sinkronizacija: Vektori se sinkroniziraju, ali ArrayList nije. Ako dodate ili izbrišete elemente iz ArrayList-a, to će se nazvati strukturnom izmjenom. Kada više niti pristupa ArrayListu istovremeno s blokom koda koji mijenja popis, tada je potrebno eksterno sinkronizirati popis. Ukratko, vektorski sadržaji nisu sigurni u niti, dok ArrayList-ovi nisu. Ako se u zahtjevu ne spominje zbirka zaštićena od niti, tada se treba odlučiti za ArrayList kada sinkronizacija dostigne performanse. Ne sinkronizirani ArrayListi su brzi.

2. Rast podataka: I ArrayList i vektorski elementi pohranjuju se kao nizovi, ali vektori imaju zadanu veličinu 10, a ArrayList nema zadanu veličinu. Kada dodate element bilo ArrayListu ili vektoru, postoji šansa da bilo koja klasa ponestane prostora. U tom slučaju, Vektor pod zadanom udvostručuje svoju veličinu, dok se veličina ArrayList-a povećava za 50%. Možete povećati vrijednost prirasta u slučaju vektora koji nisu mogući za ArrayList.

3. Pomicanje elemenata: ArrayList ovdje ima prednost jer njegovim elementima možete pristupiti jednostavnim indeksom. U slučaju vektora, morate stvoriti iterator za pomicanje njegovih elemenata.

Sažetak:

1. Ako klasu spremnika treba izmijeniti pojedinačna nit ili neka lokalna varijabla, tada biste trebali koristiti ArrayList.
2. Kada klasi klasa kontejnera pristupa s više niti, tada koristite vektore, u protivnom ćete morati napraviti ručnu sinkronizaciju.
3. Možemo odrediti priraštaj veličine s vektorom i s ArrayListom ne možemo.
4. Vektor se sinkronizira, a ArrayList nije.
5.A vektor može povećati dvostruko; ArrayList može povećati za 50%.