logo

LinkedList v Javi

Povezani seznam je del Ogrodje zbirke prisoten v paketu java.util. Ta razred je implementacija podatkovne strukture dvojno povezanega seznama.

Glavna razlika med običajnim povezanim seznamom in dvojno povezanim seznamom je v tem, da dvojno povezani seznam vsebuje dodaten kazalec, ki se običajno imenuje prejšnji kazalec, skupaj z naslednjim kazalcem in podatki, ki so na enojno povezanem seznamu.



Konstruktorji v LinkedList:

Da bi ustvarili LinkedList, moramo ustvariti objekt razreda LinkedList. Razred LinkedList je sestavljen iz različnih konstruktorjev, ki omogočajo morebitno izdelavo seznama. V tem razredu so na voljo naslednji konstruktorji:

1. LinkedList(): Ta konstruktor se uporablja za ustvarjanje praznega povezanega seznama. Če želimo ustvariti prazen LinkedList z imenom ll, ga lahko ustvarimo kot:

LinkedList ll = nov LinkedList();



2. LinkedList (zbirka C): Ta konstruktor se uporablja za ustvarjanje urejenega seznama, ki vsebuje vse elemente določene zbirke, kot jih vrne iterator zbirke. Če želimo ustvariti LinkedList z imenom ll, ga lahko ustvarimo kot:

LinkedList ll = nov LinkedList(C);

Metode za Java LinkedList:

Metoda Opis
add(indeks, E element) Ta metoda Vstavi podani element na podano mesto na tem seznamu.
dodaj (in in) Ta metoda doda navedeni element na konec tega seznama.
addAll(int indeks, zbirka c) Ta metoda v ta seznam vstavi vse elemente v podani zbirki, začenši na podanem mestu.
addAll(zbirka c) Ta metoda doda vse elemente v podani zbirki na konec tega seznama v vrstnem redu, kot jih vrne iterator podane zbirke.
addFirst(E e) Ta metoda Vstavi podani element na začetek tega seznama.
addLast(E e) Ta metoda doda navedeni element na konec tega seznama.
počisti() Ta metoda odstrani vse elemente s tega seznama.
klon() Ta metoda vrne plitvo kopijo tega seznama LinkedList.
vsebuje (predmet o) Ta metoda vrne true, če ta seznam vsebuje navedeni element.
padajočiIterator() Ta metoda vrne iterator nad elementi v tej deque v obratnem zaporednem vrstnem redu.
element() Ta metoda pridobi glavo (prvi element) tega seznama, vendar ne odstrani.
get(indeks) Ta metoda vrne element na podanem mestu na tem seznamu.
getFirst() Ta metoda vrne prvi element na tem seznamu.
getLast() Ta metoda vrne zadnji element na tem seznamu.
indexOf(predmet o) Ta metoda vrne indeks prve pojavitve podanega elementa na tem seznamu ali -1, če ta seznam ne vsebuje elementa.
lastIndexOf(predmet o) Ta metoda vrne indeks zadnje pojavitve podanega elementa na tem seznamu ali -1, če ta seznam ne vsebuje elementa.
listIterator(int indeks) Ta metoda vrne iterator seznama elementov na tem seznamu (v pravilnem zaporedju), začenši na določenem mestu na seznamu.
ponudba (E e) Ta metoda Doda navedeni element kot rep (zadnji element) tega seznama.
ponudbaPrva(E in) Ta metoda Vstavi navedeni element na začetek tega seznama.
ponudbazadnja(E e) Ta metoda Vstavi podani element na konec tega seznama.
pokukati() Ta metoda pridobi glavo (prvi element) tega seznama, vendar ne odstrani.
peekFirst() Ta metoda pridobi prvi element tega seznama, vendar ga ne odstrani, ali vrne ničelno vrednost, če je ta seznam prazen.
peekLast() Ta metoda pridobi zadnji element tega seznama, vendar ga ne odstrani, ali vrne ničelno vrednost, če je ta seznam prazen.
anketa() Ta metoda pridobi in odstrani glavo (prvi element) tega seznama.
pollFirst() Ta metoda pridobi in odstrani prvi element tega seznama ali vrne ničelno vrednost, če je ta seznam prazen.
pollLast() Ta metoda pridobi in odstrani zadnji element tega seznama ali vrne vrednost null, če je ta seznam prazen.
pop() Ta metoda izstreli element iz sklada, ki ga predstavlja ta seznam.
potisni (E in) Ta metoda potisne element na sklad, ki ga predstavlja ta seznam.
Odstrani() Ta metoda pridobi in odstrani glavo (prvi element) tega seznama.
odstrani (indeks) Ta metoda odstrani element na določenem mestu na tem seznamu.
odstrani (predmet o) Ta metoda odstrani prvo pojavitev navedenega elementa s tega seznama, če je prisoten.
odstraniPrvi() Ta metoda odstrani in vrne prvi element s tega seznama.
removeFirstOccurrence(Object o) Ta metoda odstrani prvo pojavitev navedenega elementa na tem seznamu (pri prečkanju seznama od glave do repa).
odstraniZadnjo() Ta metoda odstrani in vrne zadnji element s tega seznama.
removeLastOccurrence(Object o) Ta metoda odstrani zadnjo pojavitev navedenega elementa na tem seznamu (pri prečkanju seznama od glave do repa).
set(int indeks, E element) Ta metoda nadomesti element na podanem mestu na tem seznamu s podanim elementom.
velikost () Ta metoda vrne število elementov na tem seznamu.
spliterator() Ta metoda ustvari pozno povezovalni in neuspešno hiter razdelilnik nad elementi na tem seznamu.
toArray() Ta metoda vrne matriko, ki vsebuje vse elemente na tem seznamu v pravilnem zaporedju (od prvega do zadnjega elementa).
toArray(T[] a) Ta metoda vrne matriko, ki vsebuje vse elemente na tem seznamu v pravilnem zaporedju (od prvega do zadnjega elementa); vrsta izvajalnega časa vrnjene matrike je navedena matrika.
toString() Ta metoda vrne niz, ki vsebuje vse elemente na tem seznamu v pravilnem zaporedju (od prvega do zadnjega elementa), vsak element je ločen z vejicami, niz pa je v oglatih oklepajih.

Spodaj je izvajanje zgornjih operacij:



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

>

>

Izhod

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

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

Na zgornji sliki so AbstractList, CopyOnWriteArrayList in AbstractSequentialList razredi, ki izvajajo vmesnik seznama. V vsakem od omenjenih razredov je implementirana posebna funkcionalnost. To so:

    AbstractList: Ta razred se uporablja za implementacijo nespremenljivega seznama, za katerega je treba samo razširiti ta razred AbstractList in implementirati samo metodi get() in size(). CopyOnWriteArrayList: Ta razred izvaja vmesnik seznama. Je izboljšana različica ArrayList, v kateri so vse spremembe (dodaj, nastavi, odstrani itd.) izvedene z izdelavo nove kopije seznama.

Izvajanje različnih operacij na LinkedList:

  • Dodajanje elementov
  • Posodabljanje elementov
  • Odstranjevanje elementov
  • Ponavljanje elementov
  • V Array();
  • Velikost ();
  • odstrani prvo();
  • odstrani zadnje();

Operacija 1: Dodajanje elementov

Za dodajanje elementa na ArrayList lahko uporabimo metodo add(). Ta metoda je preobremenjena za izvajanje več operacij na podlagi različnih parametrov. To so:

    add(Object): Ta metoda se uporablja za dodajanje elementa na konec seznama LinkedList. add(int index, Object): Ta metoda se uporablja za dodajanje elementa na določen indeks v LinkedList.

Spodaj je izvedba zgornje operacije:

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

>

>

Izhod

[Geeks, For, Geeks]>

Operacija 2: Spreminjanje elementov

Po dodajanju elementov, če želimo element spremeniti, lahko to storimo z metodo set(). Ker je LinkedList indeksiran, se na element, ki ga želimo spremeniti, sklicuje indeks elementa. Zato ta metoda vzame indeks in posodobljen element, ki ga je treba vstaviti v ta indeks.

Spodaj je izvedba zgornje operacije:

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

gimp odstrani vodni žig
>

>

Izhod

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

Operacija 3: Odstranjevanje elementov

Za odstranitev elementa s seznama LinkedList lahko uporabimo metodo remove(). Ta metoda je preobremenjena za izvajanje več operacij na podlagi različnih parametrov. To so:

    remove(Object): Ta metoda se uporablja za preprosto odstranitev predmeta s seznama LinkedList. Če je takšnih objektov več, se prvi pojavitev predmeta odstrani. remove(int index): Ker je LinkedList indeksiran, ta metoda sprejme celoštevilsko vrednost, ki preprosto odstrani element, ki je prisoten na tem specifičnem indeksu v LinkedList. Po odstranitvi elementa in indeksov elementov se posodobijo, tako se posodobi tudi objekt LinkedList, ki daje nov seznam po izbrisu elementov.

Spodaj je izvedba zgornje operacije:

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

>

>

Izhod

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

Operacija 4: Ponavljanje LinkedList

Obstaja več načinov za ponavljanje skozi LinkedList. Najbolj znani načini so uporaba osnovne zanke for v kombinaciji z metodo get() za pridobivanje elementa pri določenem indeksu in napredna zanka for.

Spodaj je izvedba zgornje operacije:

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

>

>

line ukaz autocad
Izhod

Geeks For Geeks Geeks For Geeks>

Operacija 4: Povezan seznam z To Array z uporabo 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+>' '>);> >}> }>

>

>

Izhod

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

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

>

>

Izhod

The size of the linked list is: 2>

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

>

>

Izhod

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

Operacija 8- removelast();

Java


delna diferenciacija v lateksu



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

>

>

Izhod

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

Razred LinkedList v Javi je del ogrodja zbirk Java in zagotavlja implementacijo povezanega seznama vmesnika List. Omogoča shranjevanje in iskanje elementov v podatkovni strukturi dvojno povezanega seznama, kjer je vsak element povezan s svojim predhodnikom in naslednikom.

Tukaj je preprost primer, ki prikazuje, kako uporabljati LinkedList v Javi:

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

>

>

Izhod

0 1 2 3 4>

Prednosti uporabe LinkedList v Javi:

  1. Dinamična velikost: tako kot pri vektorju lahko velikost seznama LinkedList dinamično raste ali krči, tako da vam ni treba skrbeti za nastavitev začetne velikosti.
  2. Učinkovito vstavljanje in brisanje: LinkedList je učinkovita podatkovna struktura za vstavljanje ali brisanje elementov na sredini seznama, ker morate le spremeniti povezave med elementi, namesto da bi premaknili vse elemente za točko vstavljanja ali brisanja.
  3. Prilagodljiva iteracija: s povezanim seznamom lahko učinkovito iterirate po seznamu v kateri koli smeri, saj ima vsak element referenco na predhodnika in naslednika.

Slabosti uporabe LinkedList v Javi:

  1. Zmogljivost: LinkedList deluje počasneje kot ArrayList, ko gre za dostop do posameznih elementov. To je zato, ker morate prečkati seznam, da dosežete želeni element, medtem ko lahko z ArrayList preprosto dostopate do želenega elementa z uporabo indeksa.
  2. Dodatni stroški pomnilnika: LinkedList potrebuje več pomnilnika kot ArrayList, ker vsak element potrebuje dodaten pomnilnik za povezave do svojih predhodnikov in naslednikov.

Referenčna knjiga:

Dobra referenčna knjiga za spoznavanje Java Collections Framework in LinkedList je Java Collections avtorjev Naftalin in Wadler. Ta knjiga ponuja celovit pogled na ogrodje zbirk Java, vključno s LinkedList, in vključuje številne primere in vaje, ki vam pomagajo razumeti, kako učinkovito uporabljati te razrede.