Arraylist vs Vector
O listă de matrice poate fi văzută ca o matrice dinamică, care poate crește în dimensiune. Din acest motiv, programatorul nu trebuie să cunoască dimensiunea listei de matrice atunci când o definește. Vector poate fi văzut și ca o matrice care poate crește în dimensiune. Vectorii pot fi alocați cu ușurință și pot fi utilizați atunci când dimensiunea necesară a spațiului de stocare nu este cunoscută până în timpul execuției.
Ce este un Arraylist?
O listă de matrice poate fi văzută ca o matrice dinamică, care poate crește în dimensiune. Prin urmare, listele de matrice sunt ideale pentru a fi utilizate în situații în care nu cunoașteți dimensiunea elementelor necesare la momentul declarării. În Java, listele de matrice pot deține numai obiecte, nu pot deține în mod direct tipurile primitive (puteți pune tipurile primitive în interiorul unui obiect sau utilizați clasele wrapper ale tipurilor primitive). În general, listele de matrice sunt furnizate cu metode pentru a efectua inserarea, ștergerea și căutarea. Complexitatea de timp a accesării unui element este o(1), în timp ce inserarea și ștergerea au o complexitate de timp de o(n). În Java, listele de matrice pot fi parcurse folosind bucle foreach, iteratoare sau pur și simplu folosind indecși. În Java, listele de matrice au fost introduse din versiunea 1.2 și fac parte din cadrul Java Collections Framework.
Ce este un vector?
Vector este, de asemenea, o matrice care poate crește în dimensiune. Vectorii pot fi alocați cu ușurință și pot fi utilizați atunci când dimensiunea necesară a stocării nu este cunoscută până la timpul de execuție. De asemenea, vectorii pot deține numai obiecte și nu pot deține tipuri primitive. Vectorii sunt sincronizați, prin urmare pot fi utilizați în siguranță în medii cu mai multe fire. Vectorii sunt furnizați cu metode de a adăuga obiecte, de a șterge obiecte și de a căuta obiecte. Similar cu arraylist în java, vectorii pot fi traversați folosind bucle foreach, iteratoare sau pur și simplu folosind indecși. Când vine vorba de Java, vectorii au fost incluși încă de la prima versiune de Java.
Care este diferența dintre Arraylist și Vector?
Chiar dacă atât listele de matrice, cât și vectorii sunt foarte asemănătoare cu matricele dinamice care pot crește în dimensiune, au unele diferențe importante. Principala diferență dintre listele de matrice și vectori este că vectorii sunt sincronizați, în timp ce listele de matrice sunt nesincronizate. Prin urmare, utilizarea listelor de matrice în medii cu mai multe fire nu va fi potrivită, în timp ce vectorii pot fi utilizați în siguranță în medii cu mai multe fire (deoarece sunt sigure pentru fire). Dar sincronizarea în vectori ar determina o reducere a performanței. Prin urmare, nu ar fi o idee bună să folosiți vectori într-un singur mediu cu fir. Pe plan intern, atât listele de matrice, cât și vectorii folosesc matrice pentru a deține obiecte. Când spațiul curent nu este suficient, vectorii vor dubla dimensiunea matricei sale interne, în timp ce listele de matrice cresc dimensiunea matricei sale interne cu 50%. Dar atunci când se utilizează atât listele de matrice, cât și vectorii, oferind o capacitate inițială adecvată, poate fi evitată redimensionarea inutilă a matricei interne. Într-o situație în care este cunoscută rata de creștere a datelor, utilizarea vectorilor ar fi mai potrivită, deoarece valoarea incrementală a vectorilor ar putea fi definită.