logo

LinkedList i Java

Linked List er en del av Innsamlingsramme finnes i java.util-pakken. Denne klassen er en implementering av den dobbeltkoblede listedatastrukturen.

Hovedforskjellen mellom en vanlig lenket liste og en dobbelt lenket liste er at en dobbelt lenket liste inneholder en ekstra peker, vanligvis kalt forrige peker, sammen med den neste pekeren og data som er der i den enkeltlenkede listen.

Konstruktører i LinkedList:

For å lage en LinkedList, må vi lage et objekt av LinkedList-klassen. LinkedList-klassen består av forskjellige konstruktører som tillater mulig oppretting av listen. Følgende er konstruktørene som er tilgjengelige i denne klassen:



1. LinkedList(): Denne konstruktøren brukes til å lage en tom lenket liste. Hvis vi ønsker å lage en tom LinkedList med navnet ll, kan den opprettes som:

LinkedList ll = new LinkedList();

2. LinkedList (Samling C): Denne konstruktøren brukes til å lage en ordnet liste som inneholder alle elementene i en spesifisert samling, som returnert av samlingens iterator. Hvis vi ønsker å lage en LinkedList med navnet ll, kan den opprettes som:

LinkedList ll = ny LinkedList(C);

Metoder for Java LinkedList:

Metode Beskrivelse
add(int indeks, E-element) Denne metoden Setter inn det angitte elementet på den angitte posisjonen i denne listen.
legg til (Og og) Denne metoden legger til det angitte elementet på slutten av denne listen.
addAll(int index, samling c) Denne metoden Setter inn alle elementene i den spesifiserte samlingen i denne listen, og starter på den angitte posisjonen.
addAll(Samling c) Denne metoden legger til alle elementene i den angitte samlingen til slutten av denne listen, i den rekkefølgen de returneres av den angitte samlingens iterator.
addFirst(E e) Denne metoden Setter inn det angitte elementet i begynnelsen av denne listen.
addLast(E e) Denne metoden legger til det angitte elementet på slutten av denne listen.
klar() Denne metoden fjerner alle elementene fra denne listen.
klone() Denne metoden returnerer en grunn kopi av denne LinkedList.
inneholder(Objekt o) Denne metoden returnerer true hvis denne listen inneholder det angitte elementet.
descendingIterator() Denne metoden returnerer en iterator over elementene i denne dequen i omvendt sekvensiell rekkefølge.
element() Denne metoden henter, men fjerner ikke, hodet (første element) av denne listen.
get (int indeks) Denne metoden returnerer elementet på den angitte posisjonen i denne listen.
getFirst() Denne metoden returnerer det første elementet i denne listen.
getLast() Denne metoden returnerer det siste elementet i denne listen.
indexOf(Objekt o) Denne metoden returnerer indeksen for den første forekomsten av det angitte elementet i denne listen, eller -1 hvis denne listen ikke inneholder elementet.
lastIndexOf(Objekt o) Denne metoden returnerer indeksen for siste forekomst av det angitte elementet i denne listen, eller -1 hvis denne listen ikke inneholder elementet.
listIterator(int index) Denne metoden returnerer en listeiterator av elementene i denne listen (i riktig rekkefølge), og starter på den angitte posisjonen i listen.
tilbud(E e) Denne metoden Legger til det spesifiserte elementet som halen (siste element) av denne listen.
offerFirst(E og) Denne metoden Setter inn det angitte elementet foran på denne listen.
tilbudSiste(E e) Denne metoden Setter inn det angitte elementet på slutten av denne listen.
kikke() Denne metoden henter, men fjerner ikke, hodet (første element) av denne listen.
peekFirst() Denne metoden henter, men fjerner ikke, det første elementet i denne listen, eller returnerer null hvis denne listen er tom.
peekLast() Denne metoden henter, men fjerner ikke, det siste elementet i denne listen, eller returnerer null hvis denne listen er tom.
avstemming() Denne metoden henter og fjerner hodet (første element) av denne listen.
pollFirst() Denne metoden henter og fjerner det første elementet i denne listen, eller returnerer null hvis denne listen er tom.
pollLast() Denne metoden henter og fjerner det siste elementet i denne listen, eller returnerer null hvis denne listen er tom.
pop() Denne metoden Spretter et element fra stabelen representert av denne listen.
trykk (E og) Denne metoden skyver et element inn på stabelen representert av denne listen.
fjerne() Denne metoden henter og fjerner hodet (første element) av denne listen.
remove(int index) Denne metoden fjerner elementet på den angitte posisjonen i denne listen.
fjern (Objekt o) Denne metoden fjerner den første forekomsten av det angitte elementet fra denne listen hvis det finnes.
removeFirst() Denne metoden fjerner og returnerer det første elementet fra denne listen.
removeFirstOccurrence(Objekt o) Denne metoden fjerner den første forekomsten av det spesifiserte elementet i denne listen (når du krysser listen fra hode til hale).
removeLast() Denne metoden fjerner og returnerer det siste elementet fra denne listen.
removeLastOccurrence(Objekt o) Denne metoden fjerner den siste forekomsten av det angitte elementet i denne listen (når du krysser listen fra hode til hale).
sett (int-indeks, E-element) Denne metoden erstatter elementet på den angitte posisjonen i denne listen med det spesifiserte elementet.
størrelse() Denne metoden returnerer antall elementer i denne listen.
splitter() Denne metoden oppretter en sent-binding og feil-rask Spliterator over elementene i denne listen.
toArray() Denne metoden returnerer en matrise som inneholder alle elementene i denne listen i riktig rekkefølge (fra første til siste element).
toArray(T[] a) Denne metoden returnerer en matrise som inneholder alle elementene i denne listen i riktig rekkefølge (fra første til siste element); kjøretidstypen for den returnerte matrisen er den for den angitte matrisen.
toString() Denne metoden returnerer en streng som inneholder alle elementene i denne listen i riktig rekkefølge (fra første til siste element), hvert element er atskilt med komma og strengen er omsluttet av hakeparenteser.

Nedenfor er implementeringen av operasjonene ovenfor:

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

>

>

Produksjon

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

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

I illustrasjonen ovenfor er AbstractList , CopyOnWriteArrayList og AbstractSequentialList klassene som implementerer listegrensesnittet. En egen funksjonalitet er implementert i hver av de nevnte klassene. De er:

    AbstractList: Denne klassen brukes til å implementere en ikke-modifiserbar liste, for hvilken man bare trenger å utvide denne AbstractList-klassen og implementere bare get()- og size()-metodene. CopyOnWriteArrayList: Denne klassen implementerer listegrensesnittet. Det er en forbedret versjon av ArrayList der alle modifikasjonene (legg til, sett, fjern, etc.) implementeres ved å lage en ny kopi av listen.

Utføre forskjellige operasjoner på LinkedList:

  • Legge til elementer
  • Oppdatering av elementer
  • Fjerning av elementer
  • Iterering over elementer
  • Til Array();
  • Størrelse();
  • fjern First();
  • fjern siste();

Operasjon 1: Legge til elementer

For å legge til et element i en ArrayList kan vi bruke add()-metoden . Denne metoden er overbelastet for å utføre flere operasjoner basert på forskjellige parametere. De er:

    add(Object): Denne metoden brukes til å legge til et element på slutten av LinkedList. add(int index, Object): Denne metoden brukes til å legge til et element ved en spesifikk indeks i LinkedList.

Nedenfor er implementeringen av operasjonen ovenfor:

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

>

>

Produksjon

[Geeks, For, Geeks]>

Operasjon 2: Endre elementer

Etter å ha lagt til elementene, hvis vi ønsker å endre elementet, kan det gjøres ved å bruke set()-metoden . Siden en LinkedList er indeksert, blir elementet som vi ønsker å endre referert til av indeksen til elementet. Derfor tar denne metoden en indeks og det oppdaterte elementet som må settes inn i den indeksen.

Nedenfor er implementeringen av operasjonen ovenfor:

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

grunnleggende selen
>

>

Produksjon

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

Operasjon 3: Fjerning av elementer

For å fjerne et element fra en LinkedList kan vi bruke remove()-metoden . Denne metoden er overbelastet for å utføre flere operasjoner basert på forskjellige parametere. De er:

    remove(Object): Denne metoden brukes til å fjerne et objekt fra LinkedList. Hvis det er flere slike objekter, fjernes den første forekomsten av objektet. remove(int index): Siden en LinkedList er indeksert, tar denne metoden en heltallsverdi som ganske enkelt fjerner elementet som er tilstede i den spesifikke indeksen i LinkedList. Etter at elementet er fjernet og indeksene til elementer er oppdatert, blir objektet til LinkedList oppdatert og gir en ny liste etter sletting av element/er.

Nedenfor er implementeringen av operasjonen ovenfor:

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

>

>

Produksjon

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

Operasjon 4: Iterering av LinkedList

Det er flere måter å iterere på via LinkedList. De mest kjente måtene er å bruke basic for loop i kombinasjon med en get() metode for å få elementet til en spesifikk indeks og den avanserte for-loop.

Nedenfor er implementeringen av operasjonen ovenfor:

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

>

>

Produksjon

Geeks For Geeks Geeks For Geeks>

Operasjon 4: Koblet liste til To Array ved å bruke 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+>' '>);> >}> }>

>

>

Produksjon

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

Operasjon 5-størrelse();

Java


tkinter-knappen



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

>

>

Produksjon

The size of the linked list is: 2>

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

>

>

Produksjon

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

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

>

>

Produksjon

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 av Java Collections Framework og gir en koblet listeimplementering av List-grensesnittet. Det gir mulighet for lagring og henting av elementer i en dobbeltkoblet listedatastruktur, der hvert element er koblet til forgjengeren og etterfølgeren.

Her er et enkelt eksempel som viser hvordan du bruker 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);> >}> >}> }>

få forbindelse

>

>

Produksjon

0 1 2 3 4>

Fordeler med å bruke LinkedList i Java:

  1. Dynamisk størrelse: Som med Vector, kan størrelsen på en LinkedList vokse eller krympe dynamisk, så du trenger ikke å bekymre deg for å angi en startstørrelse.
  2. Effektive innsettinger og slettinger: LinkedList er en effektiv datastruktur for å sette inn eller slette elementer i midten av listen fordi du bare trenger å endre koblingene mellom elementer, i stedet for å flytte alle elementer etter innsettings- eller slettepunktet.
  3. Fleksibel iterasjon: Med en koblet liste kan du effektivt iterere gjennom listen i begge retninger, siden hvert element har en referanse til både forgjengeren og etterfølgeren.

Ulemper med å bruke LinkedList i Java:

  1. Ytelse: LinkedList har en tregere ytelse enn ArrayList når det gjelder tilgang til individuelle elementer. Dette er fordi du må krysse listen for å nå ønsket element, mens med ArrayList kan du ganske enkelt få tilgang til ønsket element ved hjelp av en indeks.
  2. Minneoverhead: LinkedList krever mer minne enn ArrayList fordi hvert element krever ekstra minne for koblingene til forgjengeren og etterfølgeren.

Oppslagsverk:

En god oppslagsbok for å lære om Java Collections Framework og LinkedList er Java Collections av Naftalin og Wadler. Denne boken gir en omfattende titt på Java-samlingsrammeverket, inkludert LinkedList, og inneholder mange eksempler og øvelser for å hjelpe deg å forstå hvordan du bruker disse klassene effektivt.