Razlika između liste nizova i vektora

Razlika između liste nizova i vektora
Razlika između liste nizova i vektora

Video: Razlika između liste nizova i vektora

Video: Razlika između liste nizova i vektora
Video: Zubne krunice - Razlika između Metal keramičkih zubnih krunica i Cirkon keramičkih zubnih krunica 2024, Juli
Anonim

Arraylist vs Vector

Lista nizova se može posmatrati kao dinamički niz, koji može rasti u veličini. Iz tog razloga, programer ne mora znati veličinu liste nizova kada je definira. Vektor se takođe može posmatrati kao niz koji može rasti u veličini. Vektori se mogu lako dodijeliti i mogu se koristiti kada potrebna veličina skladišta nije poznata do vremena izvođenja.

Šta je lista nizova?

Lista nizova se može posmatrati kao dinamički niz, koji može rasti u veličini. Stoga su liste nizova idealne za korištenje u situaciji u kojoj ne znate veličinu elemenata potrebnih u vrijeme deklaracije. U Javi, nizovi mogu držati samo objekte, ne mogu držati primitivne tipove direktno (možete staviti primitivne tipove unutar objekta ili koristiti klase omotača primitivnih tipova). Općenito, liste nizova imaju metode za izvođenje umetanja, brisanja i pretraživanja. Vremenska složenost pristupa elementu je o(1), dok umetanje i brisanje ima vremensku složenost od o(n). U Javi, nizovi se mogu preći koristeći foreach petlje, iteratore ili jednostavno koristeći indekse. U Javi, arraylists je uveden od verzije 1.2 i dio je Java Collections Frameworka.

Šta je vektor?

Vektor je također niz koji može rasti u veličini. Vektori se mogu lako dodijeliti i mogu se koristiti kada potrebna veličina skladišta nije poznata do vremena izvođenja. Vektori također mogu držati samo objekte i ne mogu zadržati primitivne tipove. Vektori su sinhronizovani, stoga se mogu bezbedno koristiti u višenitnim okruženjima. Vektori imaju metode za dodavanje objekata, brisanje objekata i pretraživanje objekata. Slično arraylist-u u Javi, vektori se mogu prelaziti korištenjem foreach petlji, iteratora ili jednostavno korištenjem indeksa. Kada je Java u pitanju, vektori su uključeni od prve verzije Jave.

Koja je razlika između Arraylist i Vector?

Iako su i liste nizova i vektori vrlo slični dinamičkim nizovima koji mogu rasti u veličini, oni imaju neke važne razlike. Glavna razlika između lista nizova i vektora je u tome što su vektori sinhronizovani dok su nizovi nesinhronizovani. Stoga korištenje nizova u višenitnim okruženjima neće biti prikladno, dok se vektori mogu bezbedno koristiti u višenitnim okruženjima (pošto su bezbedni za niti). Ali sinkronizacija u vektorima bi izazvala smanjenje performansi. Stoga ne bi bila dobra ideja koristiti vektore u okruženju s jednom niti. Interno, i liste nizova i vektori koriste nizove za držanje objekata. Kada trenutni prostor nije dovoljan, vektori će udvostručiti veličinu svog unutrašnjeg niza, dok liste nizova povećavaju veličinu njegovog unutrašnjeg niza za 50%. Ali kada se koriste i liste nizova i vektori, davanjem odgovarajućeg početnog kapaciteta, može se izbjeći nepotrebno mijenjanje veličine unutrašnjeg niza. U situaciji kada je stopa rasta podataka poznata, korištenje vektora bi bilo prikladnije jer bi se inkrementalna vrijednost vektora mogla definirati.

Preporučuje se: