Nyckelskillnad – ArrayList vs LinkedList
Samlingar är användbara för att lagra data. I en normal array är arraystorleken fast. Ibland krävs det att skapa arrayer som kan växa efter behov. Programmeringsspråk som Java har samlingar. Det är ett ramverk med en uppsättning klasser och gränssnitt. Den fungerar som en behållare för en grupp av element. Samlingar gör det möjligt att lagra, uppdatera, hämta uppsättning element. Det hjälper att arbeta med datastrukturer som listor, uppsättningar, träd och kartor. Listan är ett gränssnitt för samlingsramverket. ArrayList och LinkedList är två klasser i samlingsramverket. De implementerar samlingsgränssnittet och Listgränssnittet. Den här artikeln diskuterar skillnaden mellan ArrayList och LinkedList. ArrayList är en klass som utökar AbstractList och implementerar List-gränssnittet, som internt använder en dynamisk array för att lagra dataelement. LinkedList är en klass som utökar AbstractSequentialList och implementerar List-, Deque- och Queue-gränssnitt, som internt använder en dubbellänkad lista för att lagra dataelement. Det är den viktigaste skillnaden mellan ArrayList och LinkedList.
Vad är ArrayList?
Klassen ArrayList används för att skapa dynamiska arrayer. Till skillnad från en vanlig array är storleken på en dynamisk array inte fast. Ett objekt skapat med klassen ArrayList tillåts lagra en uppsättning element i listan. Kapaciteten ökar automatiskt, så programmeraren kan lägga till element i listan. Klassen ArrayList utökar klassen AbstractList som implementerar List-gränssnittet. Därför kan metoderna för List-gränssnittet användas av ArrayList. För att komma åt element används get()-metoden. Metoden add() kan användas för att lägga till element i listan. Metoden remove() används för att ta bort ett element från listan. Se programmet nedan.
Figur 01: Exempel på ArrayList
Enligt programmet ovan skapas ett objekt av ArrayList. Med hjälp av add-metoden kan element läggas till dynamiskt. Elementen "A", "B", "C", "D" och "E" läggs till med hjälp av add-metoden. Remove-metoden används för att ta bort ett element från listan. När 4 skickas till borttagningsmetoden tas bokstaven i det 4:e indexet som är "E" bort från listan. När du itererar genom listan med for-slingan kommer bokstäverna A, B, C och D att skrivas ut.
Vad är LinkedList?
I likhet med ArrayList används LinkedList för att lagra dataelement dynamiskt. Ett objekt skapat med klassen LinkedList tillåts lagra en uppsättning element i listan. Kapaciteten ökar automatiskt, så programmeraren kan lägga till element i listan. Den använder internt dubbelt länkad lista för att lagra data. I en dubbellänkad lista lagras data som noder. Varje nod innehåller två länkar. Den första länken pekar på föregående nod. Nästa länk pekar på nästa nod i sekvensen.
Klassen LinkedList utökar klassen AbstractSequentialList och implementerar List-gränssnittet. Därför kan metoderna för List-gränssnittet användas av LinkedList. Metoden get() kan användas för att komma åt element i listan. Metoden add() kan användas för att lägga till element i listan. Metoden remove() används för att ta bort ett element från listan. Se programmet nedan.
Figur 02: Exempel med LinkedList
Enligt programmet ovan skapas ett objekt för LinkedList. Med hjälp av add-metoden kan element läggas till dynamiskt. Elementen "A", "B", "C", "D" och "E" läggs till med hjälp av add-metoden. Remove-metoden används för att ta bort ett element från listan. När 4 skickas till borttagningsmetoden tas bokstaven i det 4:e indexet som är "E" bort från listan. När du itererar med for-slingan skrivs bokstäverna A, B, C och D ut.
Vilka är likheterna mellan ArrayList och LinkedList?
- Både ArrayList och LinkedList implementerar listgränssnitt.
- Både ArrayList och LinkedList kan innehålla dubbletter av element.
- Både ArrayList och LinkedList behåller insättningsordningen.
Vad är skillnaden mellan ArrayList och LinkedList?
ArrayList vs LinkedList |
|
ArrayList är en klass som utökar AbstractList och implementerar List-gränssnittet som internt använder en dynamisk array för att lagra dataelement. | LinkedList är en klass som utökar AbstractSequentialList och implementerar List, Deque, Queue-gränssnitt, som internt använder en dubbellänkad lista för att lagra dataelement. |
Åtkomst till element | |
Åtkomst till element i ArrayList är snabbare än i en LinkedList. | Åtkomst till element i LinkedList är långsammare än för en ArrayList. |
Manipulating Elements | |
Manipulation av element i ArrayList är långsammare än i en LinkedList. | Manipulation av element i LinkedList är snabbare än i en ArrayList. |
Beteende | |
ArrayList uppträder som en lista. | LinkedList uppträder som en lista och en kö. |
Sammanfattning – ArrayList vs LinkedList
Insamlingsramverket tillåter arbete med datastrukturer som listor, träd, kartor och uppsättningar. Listan är ett gränssnitt för samlingsramverket. Den här artikeln diskuterade skillnaden mellan ArrayList och LinkedList. ArrayList är en klass som utökar AbstractList och implementerar List-gränssnittet som internt använder en dynamisk array för att lagra dataelement. LinkedList är en klass som utökar AbstractSequentialList och implementerar List, Deque, Queue-gränssnitt, som internt använder en dubbelt länkad lista för att lagra dataelement. Det är skillnaden mellan ArrayList och LinkedList.