Arrays vs Arraylists
Nizovi su najčešće korištena podatkovna struktura za pohranu zbirke elemenata. Većina programskih jezika pruža metode za lako deklariranje nizova i pristupanje elementima u polju. Arraylist se može promatrati kao dinamični niz, koji može narasti u veličini. Zbog tog razloga, programeru ne treba znati veličinu arrailiste kada ga određuje.
Što su nizovi?
Prikazano na slici 1, dio je koda koji se obično koristi za deklariranje i dodjeljivanje vrijednosti polju. Slika 2 prikazuje kako bi niz izgledao u memoriji.
int vrijednosti [5]; Vrijednosti [0] = 100; Vrijednosti [1] = 101; Vrijednosti [2] = 102; Vrijednosti [3] = 103; Vrijednosti [4] = 104; |
Slika 1: Kôd za proglašavanje i dodjeljivanje vrijednosti polju
100 | 101 | 102 | 103 | 104 |
Indeks: 0 | 1 | 2 | 3 | 4 |
Slika 2: Niz pohranjen u memoriji
Iznad koda definira matricu koja može pohraniti 5 cjelobrojnih brojeva i njima se pristupa pomoću indeksa 0 do 4. Jedno važno svojstvo matrice je da je cijeli niz dodijeljen kao jedan blok memorije i svaki element dobiva vlastiti prostor u polju , Jednom kada je niz definiran, fiksira se njegova veličina. Dakle, ako niste sigurni u veličinu matrice u vrijeme sastavljanja, morali biste definirati dovoljno veliki niz da biste bili na sigurnoj strani. Ali većinu vremena zapravo ćemo koristiti manje broja elemenata nego što smo ih izdvojili. Dakle, znatna količina memorije je zapravo izgubljena. S druge strane, ako "dovoljno veliki niz" zapravo nije dovoljno velik, program bi se srušio.
Što su Arraylists?
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.
Koja je razlika između Arrays i Arraylists
Iako su nizovi i nizovi slični u smislu da se oboje koriste za pohranu zbirki elemenata, oni se razlikuju u načinu na koji su definirani. Veličina polja mora se dati kada je polje definirano, ali možete definirati niz bez poznavanja stvarne veličine. Elemente možete dodati nizu polja nakon što je definiran, a to nije moguće s nizovima. No, u Javi se arrailisti ne mogu držati primitivnih tipova, ali nizovi se mogu koristiti za držanje primitivnih vrsta. Ali ako vam treba struktura podataka koja može varirati u svojoj veličini, arraylist bi bio najbolji izbor.