ArrayList i LinkedList implementiraju sučelje List i održavaju redoslijed umetanja. Obje su nesinkronizirane klase.
niz datuma java
Međutim, postoje mnoge razlike između klasa ArrayList i LinkedList koje su navedene u nastavku.
ArrayList | LinkedList |
---|---|
1) ArrayList interno koristi a dinamički niz za pohranjivanje elemenata. | LinkedList interno koristi a dvostruko povezana lista za pohranjivanje elemenata. |
2) Manipulacija s ArrayList je usporiti jer interno koristi niz. Ako se bilo koji element ukloni iz niza, svi ostali elementi se pomiču u memoriji. | Manipulacija s LinkedListom je brže nego ArrayList jer koristi dvostruko povezanu listu, tako da nije potrebno pomicanje bitova u memoriji. |
3) Klasa ArrayList može djelovati kao lista samo zato što implementira samo List. | Klasa LinkedList može djelovati kao lista i red oboje jer implementira List i Deque sučelja. |
4) ArrayList je bolje za pohranu i pristup podaci. | LinkedList je bolji za manipulaciju podaci. |
5) Memorijska lokacija za elemente ArrayList-a je kontinuirana. | Mjesto za elemente povezanog popisa nije zarazno. |
6) Općenito, kada se ArrayList inicijalizira, zadani kapacitet od 10 dodjeljuje se ArrayList-u. | Ne postoji slučaj zadanog kapaciteta u LinkedList-u. U LinkedList-u prazan popis se stvara kada se LinkedList inicijalizira. |
7) Da budemo precizni, ArrayList je polje promjenjive veličine. | LinkedList implementira dvostruko povezani popis sučelja popisa. |
Primjer ArrayList i LinkedList u Javi
Pogledajmo jednostavan primjer gdje koristimo i ArrayList i LinkedList.
Naziv datoteke: TestArrayLinked.java
import java.util.*; class TestArrayLinked{ public static void main(String args[]){ List al=new ArrayList();//creating arraylist al.add('Ravi');//adding object in arraylist al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); List al2=new LinkedList();//creating linkedlist al2.add('James');//adding object in linkedlist al2.add('Serena'); al2.add('Swati'); al2.add('Junaid'); System.out.println('arraylist: '+al); System.out.println('linkedlist: '+al2); } }Testirajte sada
Izlaz:
arraylist: [Ravi,Vijay,Ravi,Ajay] linkedlist: [James,Serena,Swati,Junaid]
Bodovi za pamćenje
Slijedi nekoliko važnih točaka koje treba zapamtiti u vezi s ArrayList i LinkedList.
- Kada je stopa dodavanja ili uklanjanja veća od čitanih scenarija, idite na LinkedList. S druge strane, kada je učestalost scenarija čitanja veća od stope dodavanja ili uklanjanja, tada ArrayList ima prednost nad LinkedListom.
- Budući da su elementi ArrayList-a pohranjeni kompaktnije u usporedbi s LinkedList-om; stoga je ArrayList više prilagođen predmemoriji u usporedbi s LinkedListom. Stoga su šanse za promašaj predmemorije manje u ArrayList-u u usporedbi s LinkedList-om. Općenito se smatra da je LinkedList loš u cache-locality-u.
- Memorijski troškovi u LinkedList-u veći su u usporedbi s ArrayList-om. To je zato što u LinkedList-u imamo dvije dodatne veze (sljedeću i prethodnu) jer je potrebno pohraniti adresu prethodnog i sljedećeg čvora, a te veze zauzimaju dodatni prostor. Takve veze nisu prisutne u ArrayList.