Recomandat, 2020

Alegerea Editorului

Diferența dintre ArrayList și Vector în Java

ArrayList și Vector sunt clasele din ierarhia de colectare cadru. ArrayList și Vector, ambele sunt folosite pentru a crea o matrice dinamică de obiecte în care matricea poate crește în mărime ca și când este necesar. Există două diferențe de bază care disting ArrayList și Vector este că Vectorul aparține claselor Legacy care au fost ulterior reengineered pentru a susține clasele de colectare, în timp ce un ArrayList este o clasă de colectare standard. O altă diferență importantă este faptul că ArrayList nu este sincronizat pe de altă parte; Vectorul este sincronizat.

Să studiem alte diferențe cu ajutorul graficului de comparație prezentat mai jos.

Diagramă de comparație

Bazele comparațieiArrayListVector
De bazăClasa ArrayList nu este sincronizată.Clasa vectorială este sincronizată.
Clasa moștenităArrayList este o clasă de colecții standard.Vector este o clasă moștenită, re-proiectată pentru a susține clasa de colectare.
Declarația claseiclasa ArrayListclasa Vector
realocareaCând nu este specificat, un ArrayList este incrementat la jumătate din dimensiunea sa.Când nu este specificat, un vector este incrementat pentru a dubla dimensiunea sa.
PerformanţăDeoarece ArrayList este nesincronizat, funcționează mai repede decât Vector.Când vectorul este sincronizat, acesta funcționează mai lent decât ArrayList.
Enumerarea / IteratorArrayList utilizează interfața Iterator pentru a traversa obiectele stocate în ArrayList.Vectorul folosește Enumeration, precum și interfața Iterator pentru a traversa obiectele stocate în Vectors.

Definiția ArrayList

ArrayList aparține listei de clase standard de colectare. Clasa ArrayList este definită în interiorul pachetului java.util, extinde clasa AbstractList, care este, de asemenea, o clasă standard de colectare și implementează și List, o interfață definită în Interfețele de colecție. În Java, o matrice standard este întotdeauna de lungime fixă. Aceasta înseamnă o dată creată; acesta nu crește dinamic sau se micsorează în dimensiune. Deci, ar trebui să aveți cunoștințele anterioare despre lungimea matricei pe care o utilizați. Dar, uneori, se poate întâmpla ca lungimea necesară să fie dezvăluită în timpul rulării, astfel încât, pentru a face față acestui tip de situație, java a introdus ArrayList.

ArrayList este o clasă utilizată pentru crearea dinamică a unei matrice care conține referințele la obiecte. Această matrice ar putea crește în funcție de mărime și când este necesar. Declarația de clasă este după cum urmează:

 clasa ArrayList 

Aici, E specifică tipul de obiecte pe care o va avea un matrice. Matricea creată este de lungime variabilă și crește și scade dimensiunea atunci când obiectele sunt adăugate sau eliminate din listă.

ArrayList nu este sincronizat, ceea ce înseamnă că mai mult de un fir poate funcționa pe matrice în același timp. De exemplu, dacă un fir adaugă o referință de obiect la matrice și un alt fir elimină o referință de obiect din aceeași matrice în același timp. Crearea unei matrice dinamice folosind clasa ArrayList:

 ArrayList S1 = noul ArrayList (); System.out.println ("Dimensiunea inițială a S1:" + S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.println ("După adăugarea S1 conține:" + S1); System.out.println ("Dimensiunea lui S1 după adăugare:" + S1.size ()); S1.remove ("T"); S1.reparare (2); System.out.println ("După ștergere S1 conține:" + S1); System.out.println ("Dimensiunea S1 după ștergere:" + S1.size ()); // OutputInitial size of S1: 0 După adăugarea S1 conține: [T, E, C, H]; Dimensiunea lui S1 după adăugare: 4 După ștergere S1 conține: [E, H] Dimensiunea lui S1 după ștergere: 2 

În codul de mai sus, puteți vedea acest lucru; Am creat o serie de obiecte de tip șir. Am adăugat câteva obiecte la matricea S1 folosind metoda add () și mai târziu am șters câteva obiecte folosind metoda remove (). Puteți observa dacă nu specificați dimensiunea inițială a matricei și va avea o lungime '0'. După cum puteți vedea, matricea crește și se micsorează în timp ce adăugați și ștergeți elementele.

Definiția Vector

Vector este o clasă Legacy care este reengineered pentru a susține clasa de colectare în ierarhia Framework Collection. Clasa vectorială este de asemenea definită în pachetul java.util, extins prin clasa AbstractList și implementat de interfața List . Clasa Vector este declarată după cum urmează:

 clasa Vector 

Aici, E definește tipul de obiect care va fi stocat într-un matrice. O matrice creată folosind clasa Vector este de lungime variabilă. Se mărește dimensiunea dublă dacă incrementul nu este specificat. Să înțelegem crearea matricei folosind Vector.

 Vector V = Vector nou (1, 1); V.addElement ( "Tech"); V.addElement ( "Diferențe"); System.out.println ("Capacitate după 2 adăugare:" + V.capacity ()); V.addElement ( "între"); V.addElement ( "Vectori"); System.out.println ("Capacitate curentă:" + V.capacitate ()); // Capacitate de ieșire după 2 adăugări: 2 Capacitate curentă: 4 

În codul de mai sus puteți vedea că, am menționat mai ales dimensiunea și valoarea incrementului în constructorul respectiv Vector, în timp ce declarând matricea de obiecte șir. Prin urmare, puteți observa că, ca limită de finisare a matricei, se mărește cu valoarea furnizată constructorului în timpul declarației.

Diferențe cheie între ArrayList și vectori

  1. Fire multiple ar putea funcționa pe ArrayList în același timp, de aceea este considerat nesincronizat . Spre deosebire de ArrayList, numai un singur fir poate funcționa pe un vector la un moment dat; prin urmare, se numește Sincronizată .
  2. Într-o versiune timpurie a Java, unele clase și interfețe ar oferi metodele de stocare a obiectelor pe care le-au fost denumite Clase de Legacy Vectorul este unul din clasa Legacy a Java. Ulterior, aceste clase moștenite au fost reengineered pentru a susține clasa Collection, în timp ce clasa ArrayList este o clasă standard de colecții.
  3. Când limita unei matrice este utilizată pe deplin și un obiect nou este adăugat lângă matricea epuizată, mărimea sa crește atât în ​​cazul ArrayList, cât și în Vector, dar diferența este că în ArrayList, dacă nu este specificat dimensiunea este incrementat cu 50% din matricea curentă, în timp ce în Vector array este dublat în mărime dacă valoarea incrementului nu este specificată.
  4. Vectorul folosește Enumeration, precum și Iterator pentru a traversa o matrice, în timp ce un ArrayList utilizează numai iterator pentru traversarea unei matrice.
  5. Din moment ce ArrayList este nesincronizat și multe fire pot funcționa simultan, performanța sa este mai bună decât Vector pe care numai un fir poate funcționa la un moment dat.

asemănări:

  1. ArrayList și Vector sunt definite în pachetul java.util.
  2. ArrayList și Vector extinde atât clasa AbsractList.
  3. ArrayList și Vector implementează interfața List.
  4. ArrayList și Vectors sunt folosite pentru a crea o matrice dinamică care crește în funcție de necesități.
  5. ArrayList și Vector conțin ambele referințe de obiecte.

Concluzie:

Închei prin a spune că folosirea lui ArrayList este mai bună decât utilizarea Vectorului, deoarece acesta se comportă mai repede și mai bine.

Top