Nøgleforskel – ArrayList vs LinkedList
Samlinger er nyttige til lagring af data. I et norm alt array er arraystørrelsen fast. Nogle gange er det nødvendigt at skabe arrays, der kan vokse efter behov. Programmeringssprog såsom Java har samlinger. Det er en ramme med et sæt klasser og grænseflader. Det fungerer som en beholder for en gruppe af elementer. Samlinger giver mulighed for at gemme, opdatere, hente sæt af elementer. Det hjælper at arbejde med datastrukturer som lister, sæt, træer og kort. Listen er en grænseflade af Collection framework. ArrayList og LinkedList er to klasser i samlingsrammerne. De implementerer samlingsgrænsefladen og listegrænsefladen. Denne artikel diskuterer forskellen mellem ArrayList og LinkedList. ArrayList er en klasse, der udvider AbstractList og implementerer List-grænsefladen, som internt bruger et dynamisk array til at gemme dataelementer. LinkedList er en klasse, der udvider AbstractSequentialList og implementerer List-, Deque- og Queue-grænseflader, som internt bruger en dobbelt linket liste til at gemme dataelementer. Det er den vigtigste forskel mellem ArrayList og LinkedList.
Hvad er ArrayList?
ArrayList-klassen bruges til at skabe dynamiske arrays. I modsætning til et norm alt array er størrelsen af et dynamisk array ikke fast. Et objekt, der er oprettet ved hjælp af ArrayList-klassen, har tilladelse til at gemme et sæt elementer på listen. Kapaciteten øges automatisk, så programmøren kan tilføje elementer til listen. ArrayList-klassen udvider AbstractList-klassen, der implementerer List-grænsefladen. Derfor kan metoderne i List-grænsefladen bruges af ArrayList. For at få adgang til elementer bruges get() metoden. Add() metoden kan bruges til at tilføje elementer til listen. Metoden remove() bruges til at fjerne et element fra listen. Se nedenstående program.
Figur 01: Eksempel på ArrayList
I henhold til ovenstående program oprettes et objekt af ArrayList. Ved hjælp af add-metoden kan elementer tilføjes dynamisk. Elementerne "A", "B", "C", "D" og "E" tilføjes ved hjælp af add-metoden. Fjernmetoden bruges til at fjerne et element fra listen. Når 4 overføres til fjernmetoden, fjernes bogstavet i det 4. indeks, som er "E", fra listen. Når du gentager listen med for-løkken, udskrives bogstaverne A, B, C og D.
Hvad er LinkedList?
I lighed med ArrayList bruges LinkedList til at gemme dataelementer dynamisk. Et objekt oprettet ved hjælp af LinkedList-klassen har tilladelse til at gemme et sæt elementer på listen. Kapaciteten øges automatisk, så programmøren kan tilføje elementer til listen. Den bruger internt dobbelt-linket liste til at gemme data. I en dobbelt linket liste gemmes dataene som noder. Hver node indeholder to links. Det første link peger på den forrige node. Det næste link peger på den næste node i sekvensen.
Klassen LinkedList udvider klassen AbstractSequentialList og implementerer List-grænsefladen. Derfor kan metoderne til List-grænsefladen bruges af LinkedList. Get() metoden kan bruges til at få adgang til elementer i listen. Add() metoden kan bruges til at tilføje elementer til listen. Metoden remove() bruges til at fjerne et element fra listen. Se nedenstående program.
Figur 02: Eksempel med LinkedList
I henhold til ovenstående program oprettes et objekt af LinkedList. Ved hjælp af add-metoden kan elementer tilføjes dynamisk. Elementerne "A", "B", "C", "D" og "E" tilføjes ved hjælp af add-metoden. Fjernmetoden bruges til at fjerne et element fra listen. Når 4 overføres til fjernmetoden, fjernes bogstavet i det 4. indeks, som er "E", fra listen. Når der gentages med for-løkken, udskrives bogstaverne A, B, C og D.
Hvad er lighederne mellem ArrayList og LinkedList?
- Både ArrayList og LinkedList implementerer listegrænseflade.
- Både ArrayList og LinkedList kan indeholde duplikerede elementer.
- Både ArrayList og LinkedList opretholder indsættelsesrækkefølgen.
Hvad er forskellen mellem ArrayList og LinkedList?
ArrayList vs LinkedList |
|
ArrayList er en klasse, der udvider AbstractList og implementerer List-grænsefladen, som internt bruger et dynamisk array til at gemme dataelementer. | LinkedList er en klasse, der udvider AbstractSequentialList og implementerer List, Deque, Queue-grænseflader, som internt bruger en dobbelt linket liste til at gemme dataelementer. |
Adgang til elementer | |
At få adgang til elementer i ArrayList er hurtigere end i en LinkedList. | Adgang til elementer i LinkedList er langsommere end i en ArrayList. |
Manipulering af elementer | |
Manipulation af elementer i ArrayList er langsommere end i en LinkedList. | Manipulation af elementer i LinkedList er hurtigere end i en ArrayList. |
Adfærd | |
ArrayList optræder som en liste. | LinkedList optræder som en liste og en kø. |
Summary – ArrayList vs LinkedList
Samlingsrammen gør det muligt at arbejde med datastrukturer såsom lister, træer, kort og sæt. Listen er en grænseflade af samlingsramme. Denne artikel diskuterede forskellen mellem ArrayList og LinkedList. ArrayList er en klasse, der udvider AbstractList og implementerer List-grænsefladen, der internt bruger et dynamisk array til at gemme dataelementer. LinkedList er en klasse, der udvider AbstractSequentialList og implementerer List, Deque, Queue interfaces, som internt bruger en dobbelt linket liste til at gemme dataelementer. Det er forskellen mellem ArrayList og LinkedList.