ArrayList in LinkedList izvajata vmesnik List in vzdržujeta vrstni red vstavljanja. Oba sta nesinhronizirana razreda.
poravnava slike v css
Vendar pa obstaja veliko razlik med razredoma ArrayList in LinkedList, ki so navedene spodaj.
ArrayList | LinkedList |
---|---|
1) ArrayList interno uporablja a dinamični niz za shranjevanje elementov. | LinkedList interno uporablja a dvojno vezan seznam za shranjevanje elementov. |
2) Manipulacija z ArrayList je počasi ker interno uporablja matriko. Če katerikoli element odstranimo iz matrike, se vsi drugi elementi premaknejo v pomnilnik. | Manipulacija s LinkedList je hitreje kot ArrayList, ker uporablja dvojno povezan seznam, tako da ni potreben premik bitov v pomnilniku. |
3) Razred ArrayList lahko deluje kot seznam samo zato, ker izvaja samo seznam. | Razred LinkedList lahko delujejo kot seznam in čakalna vrsta oboje, ker izvaja vmesnika List in Deque. |
4) ArrayList je boljši za shranjevanje in dostop podatke. | LinkedList je boljši za manipulacijo podatke. |
5) Pomnilniška lokacija za elemente seznama ArrayList je sosednja. | Lokacija elementov povezanega seznama ni nalezljiva. |
6) Na splošno, ko je ArrayList inicializiran, je ArrayListu dodeljena privzeta zmogljivost 10. | V LinkedListu ni primera privzete zmogljivosti. V LinkedList se ob inicializaciji LinkedList ustvari prazen seznam. |
7) Če smo natančni, je ArrayList matrika, ki ji je mogoče spreminjati velikost. | LinkedList implementira dvojno povezan seznam vmesnika seznama. |
Primer ArrayList in LinkedList v Javi
Oglejmo si preprost primer, kjer uporabljamo tako ArrayList kot LinkedList.
Ime 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); } }Preizkusite zdaj
Izhod:
arraylist: [Ravi,Vijay,Ravi,Ajay] linkedlist: [James,Serena,Swati,Junaid]
Točke, ki si jih je treba zapomniti
Sledi nekaj pomembnih točk, ki si jih morate zapomniti v zvezi z ArrayList in LinkedList.
- Ko je stopnja dodajanja ali odstranjevanja višja od prebranih scenarijev, izberite LinkedList. Po drugi strani, ko je pogostost scenarijev branja večja od stopnje dodajanja ali odstranjevanja, ima ArrayList prednost pred LinkedList.
- Ker so elementi seznama ArrayList shranjeni bolj kompaktno v primerjavi s seznamom LinkedList; zato je ArrayList bolj prijazen predpomnilniku kot LinkedList. Tako so možnosti za zgrešeni predpomnilnik manjše v ArrayList v primerjavi s LinkedList. Na splošno velja, da je seznam LinkedList slab glede lokalnosti predpomnilnika.
- Stroški pomnilnika v LinkedList so večji v primerjavi z ArrayList. To je zato, ker imamo v LinkedList dve dodatni povezavi (naslednjo in prejšnjo), saj je treba shraniti naslov prejšnjega in naslednjega vozlišča, te povezave pa porabijo dodaten prostor. Takšne povezave niso prisotne v ArrayList.