ArrayList i Vector

Anonim

ArrayList vs Vector

Vektor primjenjuje polja koja mogu rasti / smanjiti pri izvođenju vremena kada se neki elementi dodaju ili uklone iz nje. Njenim se elementima pristupa pomoću indeksa cijelog broja. Dva polja - povećanje kapaciteta i kapaciteta, karakteriziraju upravljanje pohranom vektora. Ona provodi četiri sučelja: * Popis * Nasumični pristup * Klonable * Serializable sučelja

ArrayList, baš kao i vektori, također provodi četiri sučelja. Opet, poput vektora, njegova se veličina može promijeniti tijekom izvođenja. Također, ima polje nazvanu kapacitet čija je veličina velika kao i veličina ArrayList.

Oba vektora i ArrayList su dobri za preuzimanje elemenata iz bilo kojeg položaja, kao i za umetanje ili brisanje elemenata s kraja klase spremnika. Iz API perspektive, oba vektora, kao i ArrayList su vrlo slični. Dakle, gdje točno leži razlika između ta dva? Slijedeće točke će osvijetliti ovo pitanje:

1. Sinkronizacija: Vektori su sinkronizirani, ali ArrayList nije. Ako dodate ili izbrisate elemente iz ArrayList-a, naziva se strukturna izmjena. Kada više niti pristupaju ArrayListu istodobno s blokom koda koji modificira popis, tada je potrebno uskladiti popis sa strane. Ukratko, vektorski sadržaji su sigurni od niti dok ArrayListovi nisu. Ako zahtjev ne spominje sigurnu zbirku navoja, onda bi se trebao odlučiti za ArrayList, budući da sinkronizacija pogađa performanse. Nen-sinkronizirani ArrayListovi su brzi.

2. Rast podataka: oba ArrayList i vektorski elementi pohranjeni su kao polja, ali vektori imaju zadanu veličinu od 10, a ArrayList nema zadanu veličinu. Kada netko doda element u bilo ArrayList ili vektor, postoji mogućnost da bilo koja klasa može ostati izvan prostorije. U takvim je slučajevima, prema zadanim postavkama, Vector udvostručio njegovu veličinu dok je veličina ArrayList povećana za 50%. Možete odrediti vrijednost povećanja u slučaju vektora koja nije moguća za ArrayList.

3. Prebacivanje elemenata: ArrayList ima prednost ovdje jer možete pristupiti svojim elementima jednostavnim korištenjem indeksa. U slučaju vektora, morate stvoriti iterator kako biste prolazili njezine elemente.

Sažetak:

1. Ako se klasa spremnika promijeni jednim nitom ili nekom lokalnom varijablom, trebali biste upotrijebiti ArrayList. 2.Kad se klasi kontejnera pristupa s više niti, onda vektore koristite na drugi način, morat ćete napraviti ručnu sinkronizaciju. 3.Možemo odrediti veličinu prirasta s vektorom i ArrayListom koji ne možemo. 4.Vektor je sinkroniziran i ArrayList nije. Vektor može povećati veličinu dvostrukom; ArrayList može ga povećati za 50%.