ArrayList un LinkedList ievieš List interfeisu un uztur ievietošanas secību. Abas ir nesinhronizētas klases.
java saraksts tukšs
Tomēr ir daudz atšķirību starp ArrayList un LinkedList klasēm, kas norādītas tālāk.
ArrayList | LinkedList |
---|---|
1) ArrayList iekšēji izmanto a dinamiskais masīvs elementu uzglabāšanai. | LinkedList iekšēji izmanto a divreiz saistīts saraksts elementu uzglabāšanai. |
2) Manipulācija ar ArrayList ir lēns jo tas iekšēji izmanto masīvu. Ja kāds elements tiek noņemts no masīva, visi pārējie elementi tiek pārvietoti atmiņā. | Manipulācija ar LinkedList ir ātrāk nekā ArrayList, jo tajā tiek izmantots divreiz saistīts saraksts, tāpēc atmiņā nav nepieciešama bitu maiņa. |
3) ArrayList klase var darbojas kā saraksts tikai tāpēc, ka tas ievieš tikai sarakstu. | LinkedList klase var darbojas kā saraksts un rinda gan tāpēc, ka tas ievieš List un Deque saskarnes. |
4) ArrayList ir labāk glabāšanai un piekļuvei datus. | LinkedList ir labāk manipulēt datus. |
5) ArrayList elementu atmiņas vieta ir blakus. | Saistītā saraksta elementu atrašanās vieta nav lipīga. |
6) Parasti, kad tiek inicializēts ArrayList, ArrayList tiek piešķirta noklusējuma jauda 10. | LinkedList sarakstā nav noklusējuma jaudas. Programmā LinkedList tiek izveidots tukšs saraksts, kad tiek inicializēts LinkedList. |
7) Precīzāk sakot, ArrayList ir maināms masīvs. | LinkedList ievieš saraksta saskarnes divkārši saistīto sarakstu. |
ArrayList un LinkedList piemērs Java
Apskatīsim vienkāršu piemēru, kur mēs izmantojam gan ArrayList, gan LinkedList.
Faila nosaukums: 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); } }Izmēģiniet to tūlīt
Izvade:
arraylist: [Ravi,Vijay,Ravi,Ajay] linkedlist: [James,Serena,Swati,Junaid]
Punkti, kas jāatceras
Tālāk ir minēti daži svarīgi punkti, kas jāatceras saistībā ar ArrayList un LinkedList.
- Ja pievienošanas vai noņemšanas ātrums pārsniedz lasīšanas scenārijus, dodieties uz LinkedList. No otras puses, ja lasīšanas scenāriju biežums pārsniedz pievienošanas vai noņemšanas ātrumu, ArrayList ir prioritāte pār LinkedList.
- Tā kā ArrayList elementi tiek glabāti kompaktāk nekā LinkedList; tāpēc ArrayList ir kešatmiņai draudzīgāks, salīdzinot ar LinkedList. Tādējādi kešatmiņas izlaišanas iespēja ArrayList ir mazāka nekā LinkedList. Parasti tiek uzskatīts, ka LinkedList ir vāja kešatmiņas atrašanās vieta.
- Atmiņa LinkedList ir vairāk nekā ArrayList. Tas ir tāpēc, ka LinkedList mums ir divas papildu saites (nākamā un iepriekšējā), jo tas ir nepieciešams, lai saglabātu iepriekšējā un nākamā mezgla adreses, un šīs saites patērē papildu vietu. Šādas saites nav iekļautas ArrayList.