Diferența dintre ArrayList și Vector în Java

Autor: Laura McKinney
Data Creației: 1 Aprilie 2021
Data Actualizării: 1 Mai 2024
Anonim
Diferența dintre ArrayList și Vector în Java - Tehnologie
Diferența dintre ArrayList și Vector în Java - Tehnologie

Conţinut


ArrayList și Vector sunt ambele clase sub ierarhie Framework Framework. ArrayList și Vector, ambele sunt utilizate pentru a crea un tablou dinamic de obiecte în care matricea poate crește în dimensiune, după cum este necesar. Există două diferențe de bază care disting ArrayList și Vector este că Vector aparține claselor Legacy care au fost ulterior reproiectate pentru a sprijini clasele de colectare, în timp ce, ArrayList este o clasă standard de colectare. O altă diferență importantă este că ArrayList nu este sincronizat pe de altă parte; Vectorul este sincronizat.

Să studiem câteva alte diferențe cu ajutorul Graficului de comparație prezentat mai jos.

  1. Diagramă de comparație
  2. Definiție
  3. Diferențele cheie
  4. Asemănările
  5. Concluzie

Diagramă de comparație

Baza pentru comparațieArrayListVector
De bazăClasa ArrayList nu este sincronizată.Clasa vectorială este sincronizată.
Clasa de moștenireArrayList este o clasă standard de colectare.Vector este o clasă moștenită, re-proiectată pentru a sprijini clasa de colectare.
Declarație de clasăclasa ArrayListClasa Vector
realocareaCând nu este specificat, un ArrayList este incrementat cu jumătate din dimensiunea sa.Când nu este specificat, un vector este incrementat pentru a-și dubla dimensiunea.
PerformanţăDeoarece ArrayList este nesincronizat, funcționează mai repede decât Vector.Pe măsură ce Vector este sincronizat, acesta funcționează mai lent decât ArrayList.
Enumerarea / IteratorArrayList folosește interfața Iterator pentru a traversa obiectele stocate în ArrayList.Vector folosește Enumeration, precum și interfața Iterator pentru a traversa obiectele stocate în Vectori.


Definiția ArrayList

ArrayList aparține listei claselor de colectare standard. Clasa ArrayList este definită în interiorul java.util pachetul, extinde AbstractList clasă care este, de asemenea, o clasă standard de colectare și, de asemenea, implementează Listă, o interfață definită în Interfețe de colectare. În Java, un tablou standard este întotdeauna de lungime fixă. Asta înseamnă odată creată; nu crește dinamic sau nu se micșorează ca mărime. Deci, ar trebui să aveți cunoștințe prealabile despre lungimea tabloului pe care îl utilizați. Dar, uneori, se poate întâmpla ca lungimea necesară să fie dezvăluită la runtime, astfel încât să se ocupe de acest tip de situație, Java a introdus ArrayList.

ArrayList este o clasă folosită pentru crearea dinamică a unui tablou care reține referințele la obiecte. Acest tablou ar putea crește ca mărime și când este necesar. Declarația de clasă este următoarea:


clasa ArrayList

Aici, E specifică tipul de obiecte pe care le va deține un tablou. Matricea creată are o lungime variabilă și crește și scade în dimensiune atunci când obiectele sunt adăugate sau eliminate din listă.

ArrayList nu este sincronizat, înseamnă că mai mult de un thread poate funcționa în același timp pe tablou. De exemplu, dacă un thread adaugă o referință de obiect la tablou și un alt thread elimină o referință obiect din același tablou în același timp. Crearea unui tablou dinamic folosind clasa ArrayList:

ArrayList S1 = ArrayList nou(); System.out.ln ("Dimensiunea inițială a S1:" + S1.size ()); S1.add ( "T"); S1.add ( "C"); S1.add ( "H"); S1.add (1, "E"); System.out.ln ("După adăugarea S1 conține:" + S1); System.out.ln ("Dimensiunea S1 după adăugare:" + S1.size ()); S1.removează ("T"); S1.înlăturați (2); System.out.ln ("După ștergerea S1 conține:" + S1); System.out.ln ("Dimensiunea S1 după ștergere:" + S1.size ()); // Mărime inițială S1: 0 După adăugare S1 conține:; Mărimea S1 după adăugare: 4 După ștergere S1 conține: Mărimea S1 după ștergere: 2

În codul de mai sus, puteți vedea asta; Am creat o serie de obiecte de tip șir. Am adăugat unele obiecte la tabloul S1 folosind metoda add () și am șters mai târziu unele obiecte folosind metoda remove (). Puteți observa dacă nu specificați dimensiunea inițială a tabloului, acesta va avea lungimea „0”. După cum puteți vedea, matricea crește și micșorează ca mărime pe măsură ce adăugați și ștergeți elementele.

Definiția Vector

Vectorul este o clasă moștenire reînginată pentru a susține clasa de colectare în ierarhia de cadru de colectare. Clasa vectorială este definită și în java.util pachet, extins cu AbstractList clasa si implementata de catre Listă interfață. Clasa Vector este declarată după cum urmează:

Clasa Vector

Aici, E definește tipul de obiect care va fi stocat într-un tablou. Un tablou creat folosind clasa Vector are o lungime variabilă. Crește dublul dimensiunii sale dacă creșterea nu este specificată. Să înțelegem crearea tabloului folosind Vector.

Vector V = noul vector(1,1); V.addElement ( "Tech"); V.addElement ( "Diferențe"); System.out.ln ("Capacitate după 2 adăugare:" + V.capacitate ()); V.addElement ( "între"); V.addElement ( "Vectori"); System.out.ln ("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 asta, am menționat în special dimensiunea și valoarea incrementală în constructorul Vector, în timp ce declară tabloul de obiecte șir. Prin urmare, puteți observa că pe măsură ce limita tabloului se termină, aceasta crește cu valoarea furnizată constructorului în timpul declarației.

  1. Mai multe fire ar putea opera pe ArrayList în același timp, prin urmare, este considerat nesincronizate. Spre deosebire de ArrayList, doar un singur fir poate funcționa pe un vector la un moment dat; de aici se numește sincronizat.
  2. Într-o versiune timpurie a Java, unele clase și interfețe ar furniza metodele de stocare a obiectelor pe care le-au numit Legacy classes Vector este una dintre clasele Legacy Java. Ulterior, aceste clase moștenite au fost reînginate pentru a sprijini clasa de colectare, în timp ce clasa ArrayList este o clasă standard de colectare.
  3. Când limita unui tablou este complet folosită și un nou obiect este adăugat lângă tabloul epuizat, dimensiunea acestuia crește atât în ​​cazurile adică în ArrayList, cât și în Vector, dar diferența este că în ArrayList, dacă nu este specificată dimensiunea este incrementat cu 50% din tabloul curent, în timp ce, în vectorul matriciu este dublat ca mărime dacă valoarea incrementală nu este specificată.
  4. Vector folosește Enumeration, precum și Iterator pentru a traversa un tablou, în timp ce, un ArrayList folosește numai iterator pentru parcurgerea unui tablou.
  5. Din moment ce ArrayList este Necronizat și multe fire pot funcționa în același timp, performanțele sale sunt mai bune decât Vector pe care poate funcționa un singur fir simultan.

asemănări:

  1. ArrayList și Vector sunt definite în pachetul java.util.
  2. ArrayList și Vector extind atât clasa AbsractList.
  3. ArrayList și Vector ambele implementează interfața List.
  4. ArrayList și Vectors sunt folosiți pentru a crea un tablou dinamic care crește în funcție de necesități.
  5. ArrayList și Vector ambele rețin referințe la obiect.

Concluzie:

Închei spunând că utilizarea ArrayList este mai bună decât folosirea Vectorului, deoarece performează mai repede și mai bine.