Ključna razlika – ArrayList naspram LinkedList
Zbirke su korisne za pohranu podataka. U normalnom nizu, veličina niza je fiksna. Ponekad je potrebno stvoriti nizove koji mogu rasti po potrebi. Programski jezici kao što je Java imaju zbirke. To je okvir sa skupom klasa i sučelja. Služi kao spremnik za skupinu elemenata. Zbirke omogućuju pohranjivanje, ažuriranje, dohvaćanje skupa elemenata. Pomaže u radu sa strukturama podataka kao što su popisi, skupovi, stabla i karte. Popis je sučelje okvira zbirke. ArrayList i LinkedList dvije su klase u okviru zbirke. Oni implementiraju sučelje prikupljanja i sučelje popisa. Ovaj članak govori o razlici između ArrayList i LinkedList. ArrayList je klasa koja proširuje AbstractList i implementira sučelje List, koje interno koristi dinamički niz za pohranjivanje podatkovnih elemenata. LinkedList je klasa koja proširuje AbstractSequentialList i implementira sučelja List, Deque i Queue, koja interno koriste dvostruko povezanu listu za pohranjivanje podatkovnih elemenata. To je ključna razlika između ArrayList i LinkedList.
Što je ArrayList?
Klasa ArrayList koristi se za stvaranje dinamičkih nizova. Za razliku od normalnog niza, veličina dinamičkog niza nije fiksna. Objektu stvorenom pomoću klase ArrayList dopušteno je pohraniti skup elemenata na popis. Kapacitet se automatski povećava, tako da programer može dodati elemente na popis. Klasa ArrayList proširuje klasu AbstractList koja implementira sučelje List. Stoga ArrayList može koristiti metode List sučelja. Za pristup elementima koristi se metoda get(). Metoda add() može se koristiti za dodavanje elemenata na popis. Metoda remove() koristi se za uklanjanje elementa s popisa. Pogledajte donji program.
Slika 01: Primjer ArrayList
Prema gornjem programu kreira se objekt ArrayList. Pomoću metode dodavanja elementi se mogu dodavati dinamički. Elementi “A”, “B”, “C”, “D” i “E” dodaju se metodom dodavanja. Metoda uklanjanja koristi se za uklanjanje elementa s popisa. Prilikom prosljeđivanja 4 metodi uklanjanja, slovo u 4. indeksu koje je "E" uklanja se s popisa. Prilikom ponavljanja kroz popis pomoću petlje for ispisat će se slova A, B, C i D.
Što je LinkedList?
Slično ArrayList-u, LinkedList se koristi za dinamičko pohranjivanje podatkovnih elemenata. Objektu kreiranom pomoću klase LinkedList dopušteno je pohraniti skup elemenata na popis. Kapacitet se automatski povećava, tako da programer može dodati elemente na popis. Interno koristi dvostruko povezani popis za pohranu podataka. U dvostruko povezanom popisu podaci su pohranjeni kao čvorovi. Svaki čvor sadrži dvije veze. Prva veza pokazuje na prethodni čvor. Sljedeća veza upućuje na sljedeći čvor u nizu.
Klasa LinkedList proširuje klasu AbstractSequentialList i implementira sučelje List. Stoga LinkedList može koristiti metode List sučelja. Metoda get() može se koristiti za pristup elementima popisa. Metoda add() može se koristiti za dodavanje elemenata na popis. Metoda remove() koristi se za uklanjanje elementa s popisa. Pogledajte donji program.
Slika 02: Primjer s LinkedList
Prema gornjem programu kreira se objekt LinkedList. Pomoću metode dodavanja elementi se mogu dodavati dinamički. Elementi “A”, “B”, “C”, “D” i “E” dodaju se metodom dodavanja. Metoda uklanjanja koristi se za uklanjanje elementa s popisa. Prilikom prosljeđivanja 4 metodi uklanjanja, slovo u 4. indeksu koje je "E" uklanja se s popisa. Prilikom ponavljanja pomoću for petlje ispisat će se slova A, B, C i D.
Koje su sličnosti između ArrayList i LinkedList?
- I ArrayList i LinkedList implementiraju List sučelje.
- I ArrayList i LinkedList mogu sadržavati duplicirane 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 List sučelje koje interno koristi dinamički niz za pohranjivanje podatkovnih elemenata. | LinkedList je klasa koja proširuje AbstractSequentialList i implementira sučelja List, Deque, Queue, koja interno koriste dvostruko povezanu listu za pohranjivanje podatkovnih elemenata. |
Pristup elementima | |
Pristup elementima ArrayList-a brži je od LinkedList-a. | Pristup elementima LinkedList-a sporiji je nego elementima ArrayList-a. |
Manipuliranje elementima | |
Manipuliranje elementima ArrayList-a je sporije nego LinkedList-a. | Manipuliranje elementima LinkedList-a je brže nego ArrayList-a. |
Ponašanje | |
ArrayList djeluje kao popis. | LinkedList radi kao popis i red čekanja. |
Sažetak – ArrayList vs LinkedList
Okvir zbirke omogućuje rad sa strukturama podataka kao što su popisi, stabla, karte i skupovi. Popis je sučelje okvira zbirke. Ovaj članak raspravlja o razlici između ArrayList i LinkedList. ArrayList je klasa koja proširuje AbstractList i implementira sučelje List koje interno koristi dinamički niz za pohranjivanje podatkovnih elemenata. LinkedList je klasa koja proširuje AbstractSequentialList i implementira sučelja List, Deque, Queue, koja interno koriste dvostruko povezanu listu za pohranjivanje podatkovnih elemenata. To je razlika između ArrayList i LinkedList.