logo

LinkedList i Java

Linked List er en del af Indsamlingsramme findes i java.util-pakken. Denne klasse er en implementering af den dobbeltforbundne listedatastruktur.

Hovedforskellen mellem en normal linket liste og en dobbelt linket liste er, at en dobbelt linket liste indeholder en ekstra pointer, typisk kaldet den forrige pointer, sammen med den næste pointer og data som er der i den enkelt linkede liste.



Konstruktører i LinkedList:

For at oprette en LinkedList skal vi oprette et objekt af klassen LinkedList. LinkedList-klassen består af forskellige konstruktører, der muliggør oprettelse af listen. Følgende er konstruktørerne tilgængelige i denne klasse:

1. LinkedList(): Denne konstruktør bruges til at oprette en tom sammenkædet liste. Hvis vi ønsker at oprette en tom LinkedList med navnet ll, så kan den oprettes som:

LinkedList ll = new LinkedList();



2. LinkedList (Samling C): Denne konstruktør bruges til at oprette en ordnet liste, der indeholder alle elementerne i en specificeret samling, som returneret af samlingens iterator. Hvis vi ønsker at oprette en LinkedList med navnet ll, så kan den oprettes som:

LinkedList ll = ny LinkedList(C);

Metoder til Java LinkedList:

Metode Beskrivelse
add(int index, E element) Denne metode Indsætter det angivne element på den angivne position i denne liste.
tilføje (Og og) Denne metode tilføjer det angivne element til slutningen af ​​denne liste.
addAll(int index, Collection c) Denne metode Indsætter alle elementerne i den angivne samling i denne liste, startende ved den angivne position.
addAll(Samling c) Denne metode tilføjer alle elementerne i den angivne samling til slutningen af ​​denne liste i den rækkefølge, som de returneres af den angivne samlings iterator.
addFirst(E e) Denne metode Indsætter det angivne element i begyndelsen af ​​denne liste.
addLast(E e) Denne metode tilføjer det angivne element til slutningen af ​​denne liste.
klar() Denne metode fjerner alle elementer fra denne liste.
klone() Denne metode returnerer en overfladisk kopi af denne LinkedList.
indeholder (Objekt o) Denne metode returnerer sand, hvis denne liste indeholder det angivne element.
descendingIterator() Denne metode returnerer en iterator over elementerne i denne deque i omvendt sekventiel rækkefølge.
element() Denne metode henter, men fjerner ikke, hovedet (første element) af denne liste.
get (int indeks) Denne metode returnerer elementet på den angivne position på denne liste.
getFirst() Denne metode returnerer det første element på denne liste.
getLast() Denne metode returnerer det sidste element på denne liste.
indexOf(Objekt o) Denne metode returnerer indekset for den første forekomst af det angivne element i denne liste, eller -1, hvis denne liste ikke indeholder elementet.
lastIndexOf(Objekt o) Denne metode returnerer indekset for den sidste forekomst af det angivne element i denne liste, eller -1, hvis denne liste ikke indeholder elementet.
listIterator(int index) Denne metode returnerer en liste-iterator af elementerne i denne liste (i korrekt rækkefølge), startende ved den angivne position på listen.
tilbud(E e) Denne metode Tilføjer det angivne element som hale (sidste element) af denne liste.
offerFirst (E og) Denne metode Indsætter det angivne element foran på denne liste.
tilbudSidste(E e) Denne metode Indsætter det angivne element i slutningen af ​​denne liste.
kig() Denne metode henter, men fjerner ikke, hovedet (første element) af denne liste.
peekFirst() Denne metode henter, men fjerner ikke, det første element i denne liste eller returnerer null, hvis denne liste er tom.
peekLast() Denne metode henter, men fjerner ikke, det sidste element i denne liste eller returnerer null, hvis denne liste er tom.
afstemning() Denne metode henter og fjerner hovedet (første element) af denne liste.
pollFirst() Denne metode henter og fjerner det første element i denne liste, eller returnerer null, hvis denne liste er tom.
pollLast() Denne metode henter og fjerner det sidste element i denne liste, eller returnerer null, hvis denne liste er tom.
pop() Denne metode Pops et element fra stakken repræsenteret af denne liste.
tryk (E og) Denne metode skubber et element ind på stakken repræsenteret af denne liste.
fjerne() Denne metode henter og fjerner hovedet (første element) af denne liste.
fjern (int indeks) Denne metode fjerner elementet på den angivne position på denne liste.
fjern (Objekt o) Denne metode fjerner den første forekomst af det angivne element fra denne liste, hvis det er til stede.
removeFirst() Denne metode fjerner og returnerer det første element fra denne liste.
removeFirstOccurrence(Object o) Denne metode fjerner den første forekomst af det angivne element i denne liste (når du krydser listen fra hoved til hale).
removeLast() Denne metode fjerner og returnerer det sidste element fra denne liste.
removeLastCurrence(Object o) Denne metode fjerner den sidste forekomst af det angivne element i denne liste (når du krydser listen fra hoved til hale).
sæt (int-indeks, E-element) Denne metode erstatter elementet på den angivne position i denne liste med det angivne element.
størrelse() Denne metode returnerer antallet af elementer på denne liste.
splitter() Denne metode skaber en sent-binding og fejl-hurtig Spliterator over elementerne i denne liste.
toArray() Denne metode returnerer et array, der indeholder alle elementerne på denne liste i korrekt rækkefølge (fra første til sidste element).
toArray(T[] a) Denne metode returnerer et array, der indeholder alle elementerne i denne liste i korrekt rækkefølge (fra første til sidste element); runtime-typen for den returnerede matrix er den for den angivne matrix.
toString() Denne metode returnerer en streng, der indeholder alle elementerne på denne liste i korrekt rækkefølge (fra første til sidste element), hvert element er adskilt af kommaer, og strengen er omgivet af firkantede parenteser.

Nedenfor er implementeringen af ​​ovenstå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 ovenstående illustration er AbstractList , CopyOnWriteArrayList og AbstractSequentialList de klasser, der implementerer listegrænsefladen. En separat funktionalitet er implementeret i hver af de nævnte klasser. De er:

    AbstractList: Denne klasse bruges til at implementere en ikke-modificerbar liste, for hvilken man kun behøver at udvide denne AbstractList Class og kun implementere get() og size() metoderne. CopyOnWriteArrayList: Denne klasse implementerer listegrænsefladen. Det er en forbedret version af ArrayList, hvor alle ændringerne (tilføj, sæt, fjern osv.) implementeres ved at lave en ny kopi af listen.

Udførelse af forskellige operationer på LinkedList:

  • Tilføjelse af elementer
  • Opdatering af elementer
  • Fjernelse af elementer
  • Iteration over elementer
  • Til Array();
  • Størrelse();
  • fjern First();
  • fjern sidste();

Operation 1: Tilføjelse af elementer

For at tilføje et element til en ArrayList kan vi bruge add() metoden. Denne metode er overbelastet til at udføre flere operationer baseret på forskellige parametre. De er:

    add(Object): Denne metode bruges til at tilføje et element i slutningen af ​​LinkedList. add(int index, Object): Denne metode bruges til at tilføje et element til et specifikt indeks i LinkedList.

Nedenfor er implementeringen af ​​ovenstå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: Ændring af elementer

Efter tilføjelse af elementerne, hvis vi ønsker at ændre elementet, kan det gøres ved hjælp af set() metoden. Da en LinkedList er indekseret, refereres det element, som vi ønsker at ændre, af elementets indeks. Derfor tager denne metode et indeks og det opdaterede element, som skal indsættes i det indeks.

Nedenfor er implementeringen af ​​ovenstå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);> >}> }>

fuld form af i d e
>

>

Produktion

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

Operation 3: Fjernelse af elementer

For at fjerne et element fra en LinkedList kan vi bruge metoden remove() . Denne metode er overbelastet til at udføre flere operationer baseret på forskellige parametre. De er:

    remove(Object): Denne metode bruges til blot at fjerne et objekt fra LinkedList. Hvis der er flere sådanne objekter, fjernes den første forekomst af objektet. remove(int index): Da en LinkedList er indekseret, tager denne metode en heltalsværdi, som blot fjerner elementet, der er til stede ved det specifikke indeks i LinkedList. Efter at elementet er fjernet, og indekserne for elementer er opdateret, opdateres LinkedLists objekt, hvilket giver en ny liste efter sletning af element/er.

Nedenfor er implementeringen af ​​ovenstå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: Gentagelse af den linkede liste

Der er flere måder at gentage gennem LinkedList. De mest berømte måder er ved at bruge basic for loop i kombination med en get() metode til at få elementet til et specifikt indeks og den avancerede for-loop.

Nedenfor er implementeringen af ​​ovenstå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: Linket liste til To Array ved at bruge 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+>' '>);> >}> }>

>

>

Produktion

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

Operation 5-størrelse();

Java


tkinter knap



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);> >}> }>

>

>

Produktion

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

LinkedList-klassen i Java er en del af Java Collections Framework og giver en linket listeimplementering af List-grænsefladen. Det giver mulighed for lagring og genfinding af elementer i en dobbeltlinket listedatastruktur, hvor hvert element er knyttet til dets forgænger og efterfølgerelementer.

Her er et simpelt eksempel, der viser, hvordan man bruger 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);> >}> >}> }>

java arraylist sorteret

>

>

Produktion

0 1 2 3 4>

Fordele ved at bruge LinkedList i Java:

  1. Dynamisk størrelse: Som med Vector kan størrelsen af ​​en LinkedList vokse eller formindskes dynamisk, så du behøver ikke bekymre dig om at indstille en startstørrelse.
  2. Effektive indsættelser og sletninger: LinkedList er en effektiv datastruktur til at indsætte eller slette elementer i midten af ​​listen, fordi du kun behøver at ændre links mellem elementer, i stedet for at flytte alle elementer efter indsættelses- eller sletningspunktet.
  3. Fleksibel iteration: Med en sammenkædet liste kan du effektivt iterere gennem listen i begge retninger, da hvert element har en reference til både dets forgænger og efterfølgende elementer.

Ulemper ved at bruge LinkedList i Java:

  1. Ydelse: LinkedList har en langsommere ydeevne end ArrayList, når det kommer til at få adgang til individuelle elementer. Dette skyldes, at du skal krydse listen for at nå det ønskede element, mens du med ArrayList blot kan få adgang til det ønskede element ved hjælp af et indeks.
  2. Hukommelsesoverhead: LinkedList kræver mere hukommelse end ArrayList, fordi hvert element kræver yderligere hukommelse til links til dets forgænger og efterfølgerelementer.

Opslagsbog:

En god opslagsbog til at lære om Java Collections Framework og LinkedList er Java Collections af Naftalin og Wadler. Denne bog giver et omfattende kig på Java-samlingsrammerne, inklusive LinkedList, og indeholder mange eksempler og øvelser for at hjælpe dig med at forstå, hvordan du bruger disse klasser effektivt.