Arraylist vs Vector
Arraylist se može promatrati kao dinamični niz, koji može narasti u veličini. Iz tog razloga, programeru ne treba znati veličinu arrailista kada ga određuje. Vektor se također može promatrati kao niz koji može povećavati veličinu. Vektori se mogu lako dodijeliti i mogu ih se koristiti kada nije poznata potrebna veličina pohrane do rujna.
Što je Arraylist?
Arraylist se može promatrati kao dinamični niz, koji može narasti u veličini. Stoga su arraylisti idealni za upotrebu u situaciji u kojoj ne znate veličinu elemenata potrebnih u trenutku deklaracije. U Javi, arilisti mogu držati samo predmete, ne mogu izravno držati primitivne tipove (možete primiti primitivne tipove u objekt ili koristiti klase omota primitivnih vrsta). Obično su arilisti na raspolaganju za metode umetanja, brisanja i pretraživanja. Vremenska složenost pristupa elementu je o (1), dok umetanje i brisanje ima vremensku složenost o (n). U Javi se nizovi polja mogu kretati pomoću petlje predigre, iteratora ili jednostavno korištenjem indeksa. U Javi su arraylisti predstavljeni iz verzije 1.2 i to je dio Java Collections Framework-a.
Što je vektor?
Vector je također niz koji može povećati veličinu. Vektori se mogu lako dodijeliti i mogu ih se koristiti kada se ne zahtijeva tražena veličina prostora za pohranu do vremena izvođenja. Vektori također mogu držati samo predmete i ne mogu držati primitivne tipove. Vektori su sinkronizirani, pa ih je moguće sigurno koristiti u višestrukim jezicima. Vektorima se nude metode dodavanja objekata, brisanja objekata i objekata pretraživanja. Slično arraylistu u Javi, vektori se mogu prelaziti pomoću foreops petlje, iteratora ili jednostavno koristeći indekse. Kada je u pitanju Java, vektori su uključeni od prve verzije Jave.
Koja je razlika između Arraylista i Vektora?
Iako su i arraylisti i vektori vrlo slični dinamičkim nizovima koji mogu rasti u veličini, imaju neke važne razlike. Glavna razlika između arraylista i vektora je u tome što su vektori sinkronizirani dok arraylists nisu sinhronizirani. Stoga upotreba nizova za strujanje u više-navođenim sredinama neće biti prikladna, dok se vektori mogu sigurno koristiti u više-navođenim okruženjima (budući da su sigurni navojem). Ali sinkronizacija u vektorima uzrokovala bi smanjenje performansi. Stoga ne bi bilo dobro koristiti vektore u okruženju s jednim navojem. Iznutra, arraylisti i vektori koriste nizove za držanje objekata. Kad trenutni prostor nije dovoljan, vektori će udvostručiti veličinu svoje unutarnje matrice, dok arrayisti povećavaju veličinu unutarnjeg niza za 50%. Ali ako se koriste i arraylisti i vektori, ako se dobije odgovarajući početni kapacitet, može se izbjeći nepotrebno mijenjanje veličine unutarnjeg polja. U situaciji kad je poznata brzina rasta podataka, prikladnija bi bila uporaba vektora jer bi se mogla definirati inkrementalna vrijednost vektora..