Ključna razlika – ArrayList vs LinkedList
Kolekcije su korisne za pohranjivanje podataka. U normalnom nizu, veličina niza je fiksna. Ponekad je potrebno kreirati nizove koji mogu rasti po potrebi. Programski jezici kao što je Java imaju kolekcije. To je okvir sa skupom klasa i interfejsa. Služi kao kontejner za grupu elemenata. Kolekcije omogućavaju pohranjivanje, ažuriranje, preuzimanje skupa elemenata. Pomaže u radu sa strukturama podataka kao što su liste, skupovi, stabla i karte. Lista je interfejs okvira Collection. ArrayList i LinkedList su dvije klase u okviru kolekcija. Oni implementiraju interfejs kolekcije i interfejs liste. Ovaj članak govori o razlici između ArrayList i LinkedList. ArrayList je klasa koja proširuje AbstractList i implementira interfejs List, koji interno koristi dinamički niz za pohranjivanje elemenata podataka. LinkedList je klasa koja proširuje AbstractSequentialList i implementira interfejse List, Deque i Queue, koji interno koriste dvostruko povezanu listu za skladištenje elemenata podataka. To je ključna razlika između ArrayList i LinkedList.
Šta je ArrayList?
Klasa ArrayList se koristi za kreiranje dinamičkih nizova. Za razliku od normalnog niza, veličina dinamičkog niza nije fiksna. Objekt kreiran korištenjem klase ArrayList može pohraniti skup elemenata na listi. Kapacitet se automatski povećava, tako da programer može dodati elemente na listu. Klasa ArrayList proširuje klasu AbstractList koja implementira List interfejs. Stoga ArrayList može koristiti metode interfejsa liste. Za pristup elementima koristi se metoda get(). Metoda add() se može koristiti za dodavanje elemenata na listu. Metoda remove() se koristi za uklanjanje elementa sa liste. Pogledajte program ispod.
Slika 01: Primjer ArrayList
Prema gore navedenom programu kreira se objekat ArrayList. Koristeći metodu add, elementi se mogu dodavati dinamički. Elementi “A”, “B”, “C”, “D” i “E” dodaju se metodom dodavanja. Metoda remove se koristi za uklanjanje elementa sa liste. Prilikom prosljeđivanja 4 metodi remove, slovo u 4. indeksu koje je “E” se uklanja sa liste. Prilikom iteracije kroz listu koristeći for petlju, slova A, B, C i D će se ispisati.
Šta je LinkedList?
Slično ArrayList, LinkedList se koristi za dinamičko pohranjivanje elemenata podataka. Objekt kreiran korištenjem klase LinkedList može pohraniti skup elemenata u listu. Kapacitet se automatski povećava, tako da programer može dodati elemente na listu. Interno koristi dvostruko povezanu listu za pohranjivanje podataka. U dvostruko povezanoj listi podaci se pohranjuju kao čvorovi. Svaki čvor sadrži dvije veze. Prva veza upućuje na prethodni čvor. Sljedeća veza pokazuje na sljedeći čvor u nizu.
Klasa LinkedList proširuje klasu AbstractSequentialList i implementira interfejs liste. Stoga LinkedList može koristiti metode interfejsa liste. Get() metoda se može koristiti za pristup elementima liste. Metoda add() se može koristiti za dodavanje elemenata na listu. Metoda remove() se koristi za uklanjanje elementa sa liste. Pogledajte program ispod.
Slika 02: Primjer sa LinkedList
Prema gore navedenom programu kreira se objekat LinkedList. Koristeći metodu add, elementi se mogu dodavati dinamički. Elementi “A”, “B”, “C”, “D” i “E” dodaju se metodom dodavanja. Metoda remove se koristi za uklanjanje elementa sa liste. Prilikom prosljeđivanja 4 metodi remove, slovo u 4. indeksu koje je “E” uklanja se sa liste. Kada ponavljate korištenjem for petlje, slova A, B, C i D će se ispisati.
Koje su sličnosti između ArrayList i LinkedList?
- I ArrayList i LinkedList implementiraju List interfejs.
- I ArrayList i LinkedList mogu sadržavati duplirane elemente.
- I ArrayList i LinkedList održavaju redoslijed umetanja.
Koja je razlika između ArrayList i LinkedList?
ArrayList vs LinkedList |
|
ArrayList je klasa koja proširuje AbstractList i implementira interfejs liste koji interno koristi dinamički niz za pohranjivanje elemenata podataka. | LinkedList je klasa koja proširuje AbstractSequentialList i implementira Liste, Deque, Queue interfejse, koji interno koristi dvostruko povezanu listu za pohranjivanje elemenata podataka. |
Pristup elementima | |
Pristup elementima ArrayList je brži nego LinkedList. | Pristupanje elementima LinkedList-a je sporije nego ArrayList-u. |
Manipuliranje elementima | |
Manipuliranje elementima ArrayList je sporije nego LinkedList. | Manipuliranje elementima LinkedList-a je brže nego ArrayList-om. |
Ponašanje | |
ArrayList radi kao lista. | LinkedList radi kao lista i red čekanja. |
Sažetak – ArrayList vs LinkedList
Okvir za prikupljanje omogućava rad sa strukturama podataka kao što su liste, stabla, mape i skupovi. Lista je interfejs okvira za prikupljanje. Ovaj članak govori o razlici između ArrayList i LinkedList. ArrayList je klasa koja proširuje AbstractList i implementira List sučelje koje interno koristi dinamički niz za pohranjivanje elemenata podataka. LinkedList je klasa koja proširuje AbstractSequentialList i implementira Liste, Deque, Queue interfejse, koji interno koristi dvostruko povezanu listu za skladištenje elemenata podataka. To je razlika između ArrayList i LinkedList.