Prepojený zoznam je súčasťou Kolekčný rámec prítomný v balíku java.util . Táto trieda je implementáciou dvojnásobne prepojenej dátovej štruktúry zoznamu.
Hlavný rozdiel medzi normálnym prepojeným zoznamom a dvojitým prepojeným zoznamom je v tom, že dvojito prepojený zoznam obsahuje ďalší ukazovateľ, ktorý sa zvyčajne nazýva predchádzajúci ukazovateľ, spolu s nasledujúcim ukazovateľom a údajmi, ktoré sa nachádzajú v jednoducho prepojenom zozname.
Konštruktory v LinkedList:
Aby sme mohli vytvoriť LinkedList, musíme vytvoriť objekt triedy LinkedList. Trieda LinkedList pozostáva z rôznych konštruktorov, ktoré umožňujú prípadné vytvorenie zoznamu. V tejto triede sú dostupné nasledujúce konštruktory:
1. LinkedList(): Tento konštruktor sa používa na vytvorenie prázdneho prepojeného zoznamu. Ak chceme vytvoriť prázdny LinkedList s názvom ll, môžeme ho vytvoriť ako:
LinkedList ll = new LinkedList();
2. LinkedList (Kolekcia C): Tento konštruktor sa používa na vytvorenie usporiadaného zoznamu, ktorý obsahuje všetky prvky zadanej kolekcie, ako ich vracia iterátor kolekcie. Ak chceme vytvoriť LinkedList s názvom ll, môžeme ho vytvoriť ako:
LinkedList ll = new LinkedList(C);
Metódy pre Java LinkedList:
| Metóda | Popis |
|---|---|
| pridať (index int, prvok E) | Táto metóda Vloží zadaný prvok na určené miesto v tomto zozname. |
| pridať (a a) | Táto metóda Pripojí špecifikovaný prvok na koniec tohto zoznamu. |
| addAll(int index, kolekcia c) | Táto metóda Vloží všetky prvky v zadanej kolekcii do tohto zoznamu, počnúc od zadanej pozície. |
| addAll(Kolekcia c) | Táto metóda pripojí všetky prvky v zadanej kolekcii na koniec tohto zoznamu v poradí, v akom ich vráti iterátor zadanej kolekcie. |
| addFirst(E e) | Táto metóda Vloží zadaný prvok na začiatok tohto zoznamu. |
| addLast(E e) | Táto metóda Pripojí špecifikovaný prvok na koniec tohto zoznamu. |
| jasný() | Táto metóda odstráni všetky prvky z tohto zoznamu. |
| klon() | Táto metóda vráti plytkú kópiu tohto LinkedList. |
| obsahuje (Objekt o) | Táto metóda vráti hodnotu true, ak tento zoznam obsahuje zadaný prvok. |
| descendingIterator() | Táto metóda vracia iterátor nad prvkami v tomto deque v obrátenom poradí. |
| element() | Táto metóda načíta, ale neodstráni hlavičku (prvý prvok) tohto zoznamu. |
| získať (int index) | Táto metóda vráti prvok na zadanú pozíciu v tomto zozname. |
| getFirst() | Táto metóda vráti prvý prvok v tomto zozname. |
| getLast() | Táto metóda vráti posledný prvok v tomto zozname. |
| indexOf(Objekt o) | Táto metóda vráti index prvého výskytu zadaného prvku v tomto zozname alebo -1, ak tento zoznam prvok neobsahuje. |
| lastIndexOf(Object o) | Táto metóda vráti index posledného výskytu zadaného prvku v tomto zozname alebo -1, ak tento zoznam prvok neobsahuje. |
| listIterator(int index) | Táto metóda vráti zoznam-iterátor prvkov v tomto zozname (v správnom poradí), začínajúc na zadanej pozícii v zozname. |
| ponuka (E e) | Táto metóda Pridá zadaný prvok ako koniec (posledný prvok) tohto zoznamu. |
| ponuka prvá (E a) | Táto metóda Vloží špecifikovaný prvok na začiatok tohto zoznamu. |
| ponuka posledná (E e) | Táto metóda Vloží zadaný prvok na koniec tohto zoznamu. |
| nahliadnuť () | Táto metóda načíta, ale neodstráni hlavičku (prvý prvok) tohto zoznamu. |
| peekFirst() | Táto metóda načíta, ale neodstráni prvý prvok tohto zoznamu, alebo vráti hodnotu null, ak je tento zoznam prázdny. |
| peekLast() | Táto metóda načíta, ale neodstráni posledný prvok tohto zoznamu, alebo vráti hodnotu null, ak je tento zoznam prázdny. |
| anketa() | Táto metóda načíta a odstráni hlavičku (prvý prvok) tohto zoznamu. |
| pollFirst() | Táto metóda načíta a odstráni prvý prvok tohto zoznamu alebo vráti hodnotu null, ak je tento zoznam prázdny. |
| pollLast() | Táto metóda načíta a odstráni posledný prvok tohto zoznamu alebo vráti hodnotu null, ak je tento zoznam prázdny. |
| pop() | Táto metóda Vyberie prvok zo zásobníka reprezentovaného týmto zoznamom. |
| tlačiť (E a) | Táto metóda vloží prvok do zásobníka reprezentovaného týmto zoznamom. |
| odstrániť () | Táto metóda načíta a odstráni hlavičku (prvý prvok) tohto zoznamu. |
| odstrániť (int index) | Táto metóda odstráni prvok na zadanej pozícii v tomto zozname. |
| odstrániť (Objekt o) | Táto metóda odstráni prvý výskyt zadaného prvku z tohto zoznamu, ak je prítomný. |
| removeFirst() | Táto metóda odstráni a vráti prvý prvok z tohto zoznamu. |
| removeFirstOccurrence(Object o) | Táto metóda odstráni prvý výskyt zadaného prvku v tomto zozname (pri prechádzaní zoznamom od hlavy po koniec). |
| removeLast() | Táto metóda odstráni a vráti posledný prvok z tohto zoznamu. |
| removeLastOccurrence(Object o) | Táto metóda odstráni posledný výskyt zadaného prvku v tomto zozname (pri prechádzaní zoznamom od hlavy po koniec). |
| set(int index, prvok E) | Táto metóda nahradí prvok na zadanej pozícii v tomto zozname zadaným prvkom. |
| veľkosť () | Táto metóda vráti počet prvkov v tomto zozname. |
| rozdeľovač() | Táto metóda vytvorí nad prvkami v tomto zozname spliterator s oneskorenou väzbou a rýchlym zlyhaním. |
| toArray() | Táto metóda vráti pole obsahujúce všetky prvky v tomto zozname v správnom poradí (od prvého po posledný prvok). |
| toArray(T[] a) | Táto metóda vráti pole obsahujúce všetky prvky v tomto zozname v správnom poradí (od prvého po posledný prvok); typ runtime vráteného poľa je typ zadaného poľa. |
| natiahnuť() | Táto metóda vráti reťazec obsahujúci všetky prvky v tomto zozname v správnom poradí (od prvého po posledný prvok), každý prvok je oddelený čiarkami a reťazec je uzavretý v hranatých zátvorkách. |
Nižšie je uvedená implementácia vyššie uvedených operácií:
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);> >}> }> |
>
>Výkon
[D, A, E, B, C] [A]>

Na obrázku vyššie sú AbstractList , CopyOnWriteArrayList a AbstractSequentialList triedy, ktoré implementujú rozhranie zoznamu. V každej zo spomínaných tried je implementovaná samostatná funkcionalita. Oni sú:
- AbstractList: Táto trieda sa používa na implementáciu nemodifikovateľného zoznamu, pre ktorý stačí rozšíriť túto triedu AbstractList a implementovať iba metódy get() a size(). CopyOnWriteArrayList: Táto trieda implementuje rozhranie zoznamu. Je to vylepšená verzia ArrayList, v ktorej sú všetky úpravy (pridanie, nastavenie, odstránenie atď.) implementované vytvorením novej kópie zoznamu.
Vykonávanie rôznych operácií na LinkedList:
- Pridávanie prvkov
- Aktualizácia prvkov
- Odstraňovanie prvkov
- Iterovanie cez prvky
- To Array();
- Veľkosť ();
- remove First();
- remove last();
Operácia 1: Pridávanie prvkov
Na pridanie prvku do ArrayList môžeme použiť metódu add() . Táto metóda je preťažená na vykonávanie viacerých operácií na základe rôznych parametrov. Oni sú:
- add(Object): Táto metóda sa používa na pridanie prvku na koniec LinkedList. add(int index, Object): Táto metóda sa používa na pridanie prvku do špecifického indexu v LinkedList.
Nižšie je uvedená implementácia vyššie uvedenej operácie:
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);> >}> }> |
>
>Výkon
[Geeks, For, Geeks]>
Operácia 2: Zmena prvkov
Po pridaní prvkov, ak chceme prvok zmeniť, môžeme to urobiť pomocou metódy set() . Keďže LinkedList je indexovaný, na prvok, ktorý chceme zmeniť, odkazuje index prvku. Preto táto metóda berie index a aktualizovaný prvok, ktorý je potrebné vložiť do tohto indexu.
Nižšie je uvedená implementácia vyššie uvedenej operácie:
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);> >}> }> |
java výber zoradiť
>
>Výkon
Initial LinkedList [Geeks, Geeks, Geeks] Updated LinkedList [Geeks, For, Geeks]>
Operácia 3: Odstraňovanie prvkov
Na odstránenie prvku z LinkedList môžeme použiť metódu remove() . Táto metóda je preťažená na vykonávanie viacerých operácií na základe rôznych parametrov. Oni sú:
- remove(Object): Táto metóda sa používa na jednoduché odstránenie objektu z LinkedList. Ak existuje viacero takýchto objektov, potom sa prvý výskyt objektu odstráni. remove(int index): Keďže LinkedList je indexovaný, táto metóda nadobudne celočíselnú hodnotu, ktorá jednoducho odstráni prvok prítomný na tomto konkrétnom indexe v LinkedList. Po odstránení prvku a indexy prvkov sa aktualizujú, tak sa aktualizuje aj objekt LinkedList a po vymazaní prvku (prvkov) sa získa nový zoznam.
Nižšie je uvedená implementácia vyššie uvedenej operácie:
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);> >}> }> |
>
>Výkon
čo je predloženie adresára
Initial LinkedList [Geeks, For, Geeks] After the Index Removal [Geeks, Geeks] After the Object Removal [Geeks]>
Operácia 4: Iterácia LinkedList
Existuje niekoľko spôsobov, ako iterovať cez LinkedList. Najznámejšími spôsobmi je použitie základnej slučky for v kombinácii s metódou get() na získanie prvku na konkrétnom indexe a pokročilej slučky for.
Nižšie je uvedená implementácia vyššie uvedenej operácie:
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 + ' '); } }> |
>
>Výkon
Geeks For Geeks Geeks For Geeks>
Operácia 4: Prepojený zoznam s To Array pomocou 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+>' '>);> >}> }> |
>
>Výkon
LinkedList: [123, 12, 11, 1134] After converted LinkedList to Array: 123 12 11 1134>
Operácia 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());> >}> }> |
>
>Výkon
The size of the linked list is: 2>
Operácia 7 – removeFirst();
Java
triedenie výberu v jave
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);> >}> }> |
>
>Výkon
LinkedList:[10, 20, 30] The remove first element is: 10 Final LinkedList:[20, 30]>
Operácia 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);> >}> }> |
>
>Výkon
LinkedList:[10, 20, 30] The last element is removed: 30 Final LinkedList:[10, 20] The last element is removed: 20 Final LinkedList:[10]>
Trieda LinkedList v jazyku Java je súčasťou Java Collections Framework a poskytuje implementáciu prepojeného zoznamu rozhrania List. Umožňuje ukladanie a získavanie prvkov v dvojito prepojenej dátovej štruktúre zoznamu, kde je každý prvok prepojený so svojimi predchodcami a následnými prvkami.
Tu je jednoduchý príklad, ktorý ukazuje, ako používať LinkedList v jazyku 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);> >}> >}> }> |
>
>Výkon
0 1 2 3 4>
Výhody používania LinkedList v jazyku Java:
- Dynamická veľkosť: Rovnako ako v prípade Vector, veľkosť LinkedList sa môže dynamicky zväčšovať alebo zmenšovať, takže sa nemusíte starať o nastavenie počiatočnej veľkosti.
- Efektívne vkladanie a odstraňovanie: LinkedList je efektívna dátová štruktúra na vkladanie alebo odstraňovanie prvkov v strede zoznamu, pretože potrebujete iba zmeniť prepojenia medzi prvkami, a nie presúvať všetky prvky za bod vloženia alebo vymazania.
- Flexibilná iterácia: S prepojeným zoznamom môžete efektívne iterovať zoznam v oboch smeroch, pretože každý prvok má odkaz na jeho predchodcu aj na nasledujúce prvky.
Nevýhody používania LinkedList v jazyku Java:
- Výkon: LinkedList má pomalší výkon ako ArrayList, pokiaľ ide o prístup k jednotlivým prvkom. Je to preto, že musíte prejsť zoznamom, aby ste sa dostali k požadovanému prvku, zatiaľ čo s ArrayList môžete jednoducho pristupovať k požadovanému prvku pomocou indexu.
- Pamäťová réžia: LinkedList vyžaduje viac pamäte ako ArrayList, pretože každý prvok vyžaduje dodatočnú pamäť pre odkazy na jeho predchodcu a následné prvky.
Príručka:
Dobrou referenčnou knihou na učenie sa o Java Collections Framework a LinkedList je Java Collections od Naftalin a Wadler. Táto kniha poskytuje komplexný pohľad na rámec kolekcií Java vrátane LinkedList a obsahuje mnoho príkladov a cvičení, ktoré vám pomôžu pochopiť, ako tieto triedy efektívne používať.