logo

LinkedList i Java

Länkad lista är en del av Samlingsram finns i java.util-paketet. Den här klassen är en implementering av den dubbellänkade listdatastrukturen.

Huvudskillnaden mellan en normal länkad lista och en dubbellänkad lista är att en dubbellänkad lista innehåller en extra pekare, vanligtvis kallad föregående pekare, tillsammans med nästa pekare och data som finns där i den enkellänkade listan.

Konstruktörer i den länkade listan:

För att skapa en LinkedList måste vi skapa ett objekt av klassen LinkedList. Klassen LinkedList består av olika konstruktörer som gör det möjligt att skapa listan. Följande är de konstruktörer som finns tillgängliga i den här klassen:



1. Länkad lista(): Denna konstruktor används för att skapa en tom länkad lista. Om vi ​​vill skapa en tom länkad lista med namnet ll, kan den skapas som:

LinkedList ll = new LinkedList();

2. LinkedList (Samling C): Denna konstruktor används för att skapa en ordnad lista som innehåller alla element i en angiven samling, som returneras av samlingens iterator. Om vi ​​vill skapa en länkad lista med namnet ll, kan den skapas som:

LinkedList ll = new LinkedList(C);

Metoder för Java LinkedList:

Metod Beskrivning
add(int index, E-element) Denna metod Infogar det angivna elementet på den angivna positionen i denna lista.
lägg till (och och) Denna metod lägger till det angivna elementet i slutet av denna lista.
addAll(int index, samling c) Denna metod Infogar alla element i den angivna samlingen i den här listan, med början på den angivna positionen.
addAll(Samling c) Den här metoden lägger till alla element i den angivna samlingen i slutet av den här listan, i den ordning som de returneras av den angivna samlingens iterator.
addFirst(E e) Denna metod Infogar det angivna elementet i början av denna lista.
addLast(E e) Denna metod lägger till det angivna elementet i slutet av denna lista.
klar() Denna metod tar bort alla element från den här listan.
klona() Denna metod returnerar en ytlig kopia av denna LinkedList.
innehåller(Objekt o) Denna metod returnerar true om den här listan innehåller det angivna elementet.
descendingIterator() Denna metod returnerar en iterator över elementen i denna deque i omvänd sekventiell ordning.
element() Denna metod hämtar men tar inte bort huvudet (första elementet) i denna lista.
get(int index) Denna metod returnerar elementet på den angivna positionen i den här listan.
getFirst() Denna metod returnerar det första elementet i denna lista.
getLast() Denna metod returnerar det sista elementet i denna lista.
indexOf(Objekt o) Denna metod returnerar indexet för den första förekomsten av det angivna elementet i denna lista, eller -1 om denna lista inte innehåller elementet.
lastIndexOf(Objekt o) Denna metod returnerar indexet för den senaste förekomsten av det angivna elementet i denna lista, eller -1 om denna lista inte innehåller elementet.
listIterator(int index) Den här metoden returnerar en listiterator av elementen i den här listan (i rätt ordning), med början på den angivna positionen i listan.
erbjudande(E e) Denna metod Lägger till det angivna elementet som svansen (sista elementet) i denna lista.
offerFirst(E och) Denna metod Infogar det angivna elementet längst fram i listan.
offerLast(E e) Denna metod Infogar det angivna elementet i slutet av denna lista.
titt() Denna metod hämtar men tar inte bort huvudet (första elementet) i denna lista.
peekFirst() Den här metoden hämtar, men tar inte bort, det första elementet i listan, eller returnerar null om listan är tom.
peekLast() Den här metoden hämtar, men tar inte bort, det sista elementet i listan, eller returnerar null om listan är tom.
opinionsundersökning() Denna metod hämtar och tar bort huvudet (första elementet) i denna lista.
pollFirst() Denna metod hämtar och tar bort det första elementet i den här listan, eller returnerar null om listan är tom.
pollLast() Den här metoden hämtar och tar bort det sista elementet i listan, eller returnerar null om listan är tom.
pop() Denna metod Poppar ett element från stapeln som representeras av den här listan.
push(E och) Den här metoden skjuter ett element till stapeln som representeras av denna lista.
avlägsna() Denna metod hämtar och tar bort huvudet (första elementet) i denna lista.
remove(int index) Denna metod tar bort elementet på den angivna positionen i den här listan.
ta bort(Objekt o) Den här metoden tar bort den första förekomsten av det angivna elementet från den här listan om det finns.
removeFirst() Denna metod tar bort och returnerar det första elementet från den här listan.
removeFirstCurrence(Objekt o) Den här metoden tar bort den första förekomsten av det angivna elementet i den här listan (när du går igenom listan från huvud till svans).
removeLast() Denna metod tar bort och returnerar det sista elementet från den här listan.
removeLastOccurrence(Object o) Denna metod tar bort den senaste förekomsten av det angivna elementet i den här listan (när du går igenom listan från huvud till svans).
set(int index, E-element) Denna metod ersätter elementet på den angivna positionen i den här listan med det angivna elementet.
storlek() Denna metod returnerar antalet element i den här listan.
spliterator() Denna metod skapar en sent bindande och misslyckad splitterator över elementen i den här listan.
toArray() Denna metod returnerar en array som innehåller alla elementen i den här listan i rätt ordning (från första till sista elementet).
toArray(T[] a) Denna metod returnerar en array som innehåller alla elementen i den här listan i rätt ordning (från första till sista elementet); körtidstypen för den returnerade arrayen är den för den angivna arrayen.
att stränga() Denna metod returnerar en sträng som innehåller alla elementen i den här listan i rätt ordning (från första till sista elementet), varje element separeras med kommatecken och strängen omges av hakparenteser.

Nedan är implementeringen av ovanstående operationer:

Java




// Java Program to Demonstrate> // Implementation of LinkedList> // class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Driver code> >public> static> void> main(String args[])> >{> >// Creating object of the> >// class linked list> >LinkedList ll =>new> LinkedList();> > >// Adding elements to the linked list> >ll.add(>'A'>);> >ll.add(>'B'>);> >ll.addLast(>'C'>);> >ll.addFirst(>'D'>);> >ll.add(>2>,>'E'>);> > >System.out.println(ll);> > >ll.remove(>'B'>);> >ll.remove(>3>);> >ll.removeFirst();> >ll.removeLast();> > >System.out.println(ll);> >}> }>

>

>

Produktion

[D, A, E, B, C] [A]>

List-ArrayList-in-Java-In-Depth-Study

I illustrationen ovan är AbstractList , CopyOnWriteArrayList och AbstractSequentialList klasserna som implementerar listgränssnittet. En separat funktionalitet är implementerad i var och en av de nämnda klasserna. Dom är:

    AbstractList: Denna klass används för att implementera en omodifierbar lista, för vilken man bara behöver utöka denna AbstractList Class och implementera endast get() och size() metoderna. CopyOnWriteArrayList: Denna klass implementerar listgränssnittet. Det är en förbättrad version av ArrayList där alla ändringar (lägg till, ställ in, ta bort, etc.) implementeras genom att göra en ny kopia av listan.

Utföra olika operationer på LinkedList:

  • Lägga till element
  • Uppdaterar element
  • Ta bort element
  • Itererar över element
  • Till Array();
  • Storlek();
  • ta bort First();
  • ta bort last();

Operation 1: Lägga till element

För att lägga till ett element i en ArrayList kan vi använda metoden add() . Denna metod är överbelastad för att utföra flera operationer baserat på olika parametrar. Dom är:

    add(Object): Denna metod används för att lägga till ett element i slutet av LinkedList. add(int index, Object): Denna metod används för att lägga till ett element vid ett specifikt index i LinkedList.

Nedan är implementeringen av ovanstående operation:

Java




// Java program to add elements> // to a LinkedList> > import> java.util.*;> > public> class> GFG {> > >public> static> void> main(String args[])> >{> >LinkedList ll =>new> LinkedList();> > >ll.add(>'Geeks'>);> >ll.add(>'Geeks'>);> >ll.add(>1>,>'For'>);> > >System.out.println(ll);> >}> }>

>

>

Produktion

[Geeks, For, Geeks]>

Operation 2: Ändra element

Efter att ha lagt till elementen, om vi vill ändra elementet, kan det göras med metoden set() . Eftersom en LinkedList är indexerad, refereras det element som vi vill ändra till av elementets index. Därför tar denna metod ett index och det uppdaterade elementet som måste infogas vid det indexet.

Nedan är implementeringen av ovanstående operation:

Java




// Java program to change elements> // in a LinkedList> > import> java.util.*;> > public> class> GFG {> > >public> static> void> main(String args[])> >{> >LinkedList ll =>new> LinkedList();> > >ll.add(>'Geeks'>);> >ll.add(>'Geeks'>);> >ll.add(>1>,>'Geeks'>);> > >System.out.println(>'Initial LinkedList '> + ll);> > >ll.set(>1>,>'For'>);> > >System.out.println(>'Updated LinkedList '> + ll);> >}> }>

hur man läser från csv-fil i java
>

>

Produktion

Initial LinkedList [Geeks, Geeks, Geeks] Updated LinkedList [Geeks, For, Geeks]>

Operation 3: Ta bort element

För att ta bort ett element från en LinkedList kan vi använda metoden remove() . Denna metod är överbelastad för att utföra flera operationer baserat på olika parametrar. Dom är:

    remove(Object): Denna metod används för att helt enkelt ta bort ett objekt från den länkade listan. Om det finns flera sådana objekt tas den första förekomsten av objektet bort. remove(int index): Eftersom en LinkedList är indexerad, tar denna metod ett heltalsvärde som helt enkelt tar bort elementet som finns i det specifika indexet i LinkedList. Efter att elementet har tagits bort och indexen för element uppdateras så uppdateras objektet för LinkedList vilket ger en ny lista efter radering av element/er.

Nedan är implementeringen av ovanstående operation:

Java




// Java program to remove elements> // in a LinkedList> > import> java.util.*;> > public> class> GFG {> > >public> static> void> main(String args[])> >{> >LinkedList ll =>new> LinkedList();> > >ll.add(>'Geeks'>);> >ll.add(>'Geeks'>);> >ll.add(>1>,>'For'>);> > >System.out.println(>'Initial LinkedList '> + ll);> > >// Function call> >ll.remove(>1>);> > >System.out.println(>'After the Index Removal '> + ll);> > >ll.remove(>'Geeks'>);> > >System.out.println(>'After the Object Removal '> >+ ll);> >}> }>

>

>

Produktion

Initial LinkedList [Geeks, For, Geeks] After the Index Removal [Geeks, Geeks] After the Object Removal [Geeks]>

Operation 4: Iterering av den länkade listan

Det finns flera sätt att iterera genom LinkedList. De mest kända sätten är att använda basic for loop i kombination med en get() metod för att få elementet vid ett specifikt index och den avancerade for-loopen.

Nedan är implementeringen av ovanstående operation:

Java




// Java program to iterate the elements> // in an LinkedList> > import> java.util.*;> > public> class> GFG {> > >public> static> void> main(String args[])> >{> >LinkedList ll> >=>new> LinkedList();> > >ll.add(>'Geeks'>);> >ll.add(>'Geeks'>);> >ll.add(>1>,>'For'>);> > >// Using the Get method and the> >// for loop> >for> (>int> i =>0>; i System.out.print(ll.get(i) + ' '); } System.out.println(); // Using the for each loop for (String str : ll) System.out.print(str + ' '); } }>

>

>

Produktion

Geeks For Geeks Geeks For Geeks>

Operation 4: Länkad lista till To Array genom att använda toArray();

Java




import> java.util.*;> public> class> GFG2 {> >public> static> void> main(String[] args)> >{> >LinkedList list=>new> LinkedList();> >list.add(>123>);> >list.add(>12>);> >list.add(>11>);> >list.add(>1134>);> >System.out.println(>'LinkedList: '>+ list);> >Object[] a = list.toArray();> >System.out.print(>'After converted LinkedList to Array: '>);> >for>(Object element : a)> >System.out.print(element+>' '>);> >}> }>

strängar i c

>

>

Produktion

LinkedList: [123, 12, 11, 1134] After converted LinkedList to Array: 123 12 11 1134>

Operation 5-size();

Java




import> java.io.*;> import> java.util.LinkedList;> public> class> GFG2 {> >public> static> void> main(String args[]) {> >LinkedList list =>new> LinkedList();> >list.add(>'Geeks for Geeks '>);> >list.add(>'is best '>);> >// Displaying the size of the list> >System.out.println(>'The size of the linked list is: '> + list.size());> >}> }>

>

>

Produktion

The size of the linked list is: 2>

Operation 7 – removeFirst();

Java




import> java.io.*;> import> java.util.LinkedList;> public> class> GFG2 {> >public> static> void> main(String args[]) {> > >LinkedList list =>new> LinkedList();> >list.add(>10>);> >list.add(>20>);> >list.add(>30>);> >System.out.println(>'LinkedList:'> + list);> >System.out.println(>'The remove first element is: '> + list.removeFirst());> >// Displaying the final list> >System.out.println(>'Final LinkedList:'> + list);> >}> }>

>

>

Produktion

LinkedList:[10, 20, 30] The remove first element is: 10 Final LinkedList:[20, 30]>

Operation 8- removelast();

Java




import> java.io.*;> import> java.util.LinkedList;> public> class> GFG2 {> >public> static> void> main(String args[])> >{> > >LinkedList list =>new> LinkedList();> >list.add(>10>);> >list.add(>20>);> >list.add(>30>);> >System.out.println(>'LinkedList:'> + list);> >// Remove the tail using removeLast()> >System.out.println(>'The last element is removed: '> + list.removeLast());> >// Displaying the final list> >System.out.println(>'Final LinkedList:'> + list);> >// Remove the tail using removeLast()> >System.out.println(>'The last element is removed: '> + list.removeLast());> >// Displaying the final list> >System.out.println(>'Final LinkedList:'> + list);> >}> }>

>

>

sträng java
Produktion

LinkedList:[10, 20, 30] The last element is removed: 30 Final LinkedList:[10, 20] The last element is removed: 20 Final LinkedList:[10]>

Klassen LinkedList i Java är en del av Java Collections Framework och tillhandahåller en länkad listimplementering av List-gränssnittet. Det möjliggör lagring och hämtning av element i en dubbellänkad listdatastruktur, där varje element är länkat till dess föregångare och efterföljande element.

Här är ett enkelt exempel som visar hur man använder en LinkedList i Java:

Java




import> java.util.LinkedList;> > public> class> LinkedListExample {> >public> static> void> main(String[] args) {> >// Create a new linked list> >LinkedList linkedList =>new> LinkedList();> > >// Add elements to the linked list> >linkedList.add(>1>);> >linkedList.add(>2>);> >linkedList.add(>3>);> > >// Add an element to the beginning of the linked list> >linkedList.addFirst(>0>);> > >// Add an element to the end of the linked list> >linkedList.addLast(>4>);> > >// Print the elements of the linked list> >for> (>int> i : linkedList) {> >System.out.println(i);> >}> >}> }>

>

>

Produktion

0 1 2 3 4>

Fördelar med att använda LinkedList i Java:

  1. Dynamisk storlek: Precis som med Vector kan storleken på en LinkedList växa eller krympa dynamiskt, så du behöver inte oroa dig för att ställa in en initial storlek.
  2. Effektiva infogningar och borttagningar: LinkedList är en effektiv datastruktur för att infoga eller ta bort element i mitten av listan eftersom du bara behöver ändra länkarna mellan element, istället för att flytta alla element efter insättnings- eller raderingspunkten.
  3. Flexibel iteration: Med en länkad lista kan du effektivt iterera genom listan i båda riktningarna, eftersom varje element har en referens till både dess föregångare och efterföljande element.

Nackdelar med att använda LinkedList i Java:

  1. Prestanda: LinkedList har en långsammare prestanda än ArrayList när det gäller åtkomst till enskilda element. Detta beror på att du måste gå igenom listan för att nå det önskade elementet, medan du med ArrayList helt enkelt kan komma åt det önskade elementet med hjälp av ett index.
  2. Minnesoverhead: LinkedList kräver mer minne än ArrayList eftersom varje element kräver ytterligare minne för länkarna till dess föregångare och efterföljande element.

Uppslagsbok:

En bra referensbok för att lära dig mer om Java Collections Framework och LinkedList är Java Collections av Naftalin och Wadler. Den här boken ger en omfattande titt på Java-samlingsramverket, inklusive LinkedList, och innehåller många exempel och övningar som hjälper dig att förstå hur du använder dessa klasser effektivt.