Arraylist vs Vector
Un arraylist poate fi văzut ca o matrice dinamică, care poate crește în dimensiune. Din acest motiv, programatorul nu trebuie să cunoască mărimea listei de arrayl când îl definește. Vectorul poate fi, de asemenea, văzut ca o matrice care poate crește în dimensiune. Vectorii pot fi ușor alocați și pot fi folosiți atunci când dimensiunea necesară a stocării nu este cunoscută până la runtime.
Ce este un Arraylist?
Un arraylist poate fi văzut ca o matrice dinamică, care poate crește în dimensiune. Prin urmare, arraylists sunt ideali pentru a fi utilizați în situația în care nu știți dimensiunea elementelor necesare în momentul declarației. În Java, arraylistii pot deține numai obiecte, nu pot deține direct tipuri primitive (puteți pune tipurile primitive în interiorul unui obiect sau puteți utiliza clasele wrapper ale tipurilor primitive). În general, arraylists sunt furnizate cu metode pentru a efectua inserarea, ștergerea și căutarea. Complexitatea de timp pentru accesarea unui element este o (1), în timp ce inserarea și ștergerea au o complexitate de timp de o (n). În Java, arraylistele pot fi parcurse folosind bucle pentru fiecare, iteratoare sau pur și simplu folosind indicii. În Java, arraylists au fost introduse din versiunea 1.2 și face parte din Java Collections Framework.
Ce este un vector?
Vectorul este, de asemenea, o matrice care poate crește în dimensiune. Vectorii pot fi ușor alocați și pot fi utilizați atunci când dimensiunea necesară a stocării nu este cunoscută până la runtime. De asemenea, vectorii pot deține numai obiecte și nu pot deține tipuri primitive. Vectorii sunt sincronizați, prin urmare pot fi folosiți în siguranță în medii cu mai multe fire. Vectorilor li se oferă metode pentru a adăuga obiecte, șterge obiecte și căuta obiecte. Similar cu arraylist în java, vectorii pot fi parcurși folosind bucle pentru fiecare, iteratori sau pur și simplu folosind indicii. Când vine vorba de Java, vectorii au fost incluși de la prima versiune de Java.
Care este diferența dintre Arraylist și Vector?
Chiar dacă atât arraylists cât și vectori sunt foarte asemănători cu matricele dinamice care pot crește în dimensiune, ele au unele diferențe importante. Principala diferență dintre arrailisti și vectori este că vectorii sunt sincronizați, în timp ce arrailistii sunt nesincronizați. Prin urmare, utilizarea arraylistelor în medii cu mai multe fire nu va fi adecvată, î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 arrailistii, cât și vectorii folosesc tablouri pentru a ține obiecte. Atunci când spațiul curent nu este suficient, vectorii vor dubla dimensiunea matricei sale interne, în timp ce arrailistii cresc dimensiunea matricei sale interne cu 50%. Dar atunci când se utilizează atât arraylists-urile, cât și vectorii, oferind o capacitate inițială adecvată, poate fi evitată redimensionarea inutilă a matricei interne. Într-o situație în care rata de creștere a datelor este cunoscută, utilizarea vectorilor ar fi mai potrivită, deoarece ar putea fi definită valoarea incrementală a vectorilor.