Linkitetty lista on osa Keräyskehys läsnä java.util -paketissa. Tämä luokka on kaksinkertaisesti linkitetyn listan tietorakenteen toteutus.
Suurin ero tavallisen linkitetyn luettelon ja kaksoislinkitetyn luettelon välillä on se, että kaksoislinkitetty luettelo sisältää ylimääräisen osoittimen, jota kutsutaan tyypillisesti edelliseksi osoittimeksi, sekä seuraavan osoittimen ja tiedot, jotka ovat yksittäislinkitetyssä luettelossa.
LinkedListin rakentajat:
LinkedList-luettelon luomiseksi meidän on luotava LinkedList-luokan objekti. LinkedList-luokka koostuu erilaisista konstruktoreista, jotka mahdollistavat listan luomisen. Tässä luokassa saatavilla olevat rakentajat:
1. LinkedList(): Tätä rakentajaa käytetään tyhjän linkitettyjen luettelon luomiseen. Jos haluamme luoda tyhjän LinkedListin nimellä ll, se voidaan luoda seuraavasti:
LinkedList ll = uusi LinkedList();
2. LinkedList (kokoelma C): Tätä rakentajaa käytetään järjestetyn luettelon luomiseen, joka sisältää kaikki tietyn kokoelman elementit kokoelman iteraattorin palauttamana. Jos haluamme luoda LinkedList-luettelon nimellä ll, se voidaan luoda seuraavasti:
LinkedList ll = uusi LinkedList(C);
Java LinkedListin menetelmät:
| Menetelmä | Kuvaus |
|---|---|
| add(int-indeksi, E-elementti) | Tämä menetelmä Lisää määritetyn elementin määritettyyn kohtaan tässä luettelossa. |
| lisää (ja ja) | Tämä menetelmä lisää määritetyn elementin tämän luettelon loppuun. |
| addAll(int index, kokoelma c) | Tämä menetelmä lisää kaikki määritetyn kokoelman elementit tähän luetteloon alkaen määritetystä paikasta. |
| lisää kaikki (kokoelma c) | Tämä menetelmä lisää kaikki määritetyn kokoelman elementit tämän luettelon loppuun siinä järjestyksessä, jossa määritetyn kokoelman iteraattori palauttaa ne. |
| addFirst(E e) | Tämä menetelmä Lisää määritetyn elementin tämän luettelon alkuun. |
| lisääViimeinen(E e) | Tämä menetelmä lisää määritetyn elementin tämän luettelon loppuun. |
| asia selvä() | Tämä menetelmä poistaa kaikki elementit tästä luettelosta. |
| klooni() | Tämä menetelmä palauttaa matalan kopion tästä linkkiluettelosta. |
| sisältää (objekti o) | Tämä menetelmä palauttaa tosi, jos tämä luettelo sisältää määritetyn elementin. |
| descendingIterator() | Tämä menetelmä palauttaa iteraattorin tämän dequen elementtien päälle käänteisessä järjestyksessä. |
| elementti() | Tämä menetelmä hakee, mutta ei poista, tämän luettelon pään (ensimmäisen elementin). |
| get(int index) | Tämä menetelmä palauttaa elementin määritettyyn kohtaan tässä luettelossa. |
| getFirst() | Tämä menetelmä palauttaa luettelon ensimmäisen elementin. |
| getLast() | Tämä menetelmä palauttaa tämän luettelon viimeisen elementin. |
| indexOf(Object o) | Tämä menetelmä palauttaa määritetyn elementin ensimmäisen esiintymän indeksin tässä luettelossa tai -1, jos tämä luettelo ei sisällä elementtiä. |
| lastIndexOf(Object o) | Tämä menetelmä palauttaa indeksin määritetyn elementin viimeisestä esiintymisestä tässä luettelossa tai -1, jos tämä luettelo ei sisällä elementtiä. |
| listIterator(int index) | Tämä menetelmä palauttaa lista-iteraattorin tämän luettelon elementeistä (oikeassa järjestyksessä) alkaen määritetystä kohdasta luettelossa. |
| tarjous (E e) | Tämä menetelmä Lisää määritetyn elementin tämän luettelon loppupääksi (viimeiseksi elementiksi). |
| tarjous ensin (E ja) | Tämä menetelmä Lisää määritetyn elementin tämän luettelon alkuun. |
| tarjous viimeinen(E e) | Tämä menetelmä Lisää määritetyn elementin tämän luettelon loppuun. |
| kurkistaa() | Tämä menetelmä hakee, mutta ei poista, tämän luettelon pään (ensimmäisen elementin). |
| peekFirst() | Tämä menetelmä hakee, mutta ei poista, tämän luettelon ensimmäisen elementin tai palauttaa tyhjän, jos tämä luettelo on tyhjä. |
| peekLast() | Tämä menetelmä hakee, mutta ei poista, tämän luettelon viimeisen elementin tai palauttaa nollan, jos tämä luettelo on tyhjä. |
| kysely () | Tämä menetelmä hakee ja poistaa tämän luettelon pään (ensimmäisen elementin). |
| PollFirst() | Tämä menetelmä hakee ja poistaa tämän luettelon ensimmäisen elementin tai palauttaa nollan, jos tämä luettelo on tyhjä. |
| kysely viimeinen() | Tämä menetelmä hakee ja poistaa tämän luettelon viimeisen elementin tai palauttaa nollan, jos tämä luettelo on tyhjä. |
| pop() | Tämä menetelmä avaa elementin tämän luettelon edustamasta pinosta. |
| työnnä (E ja) | Tämä menetelmä työntää elementin tämän luettelon edustamaan pinoon. |
| Poista() | Tämä menetelmä hakee ja poistaa tämän luettelon pään (ensimmäisen elementin). |
| poista (int index) | Tämä menetelmä poistaa elementin määritetystä sijainnista tässä luettelossa. |
| poista (objekti o) | Tämä menetelmä poistaa määritetyn elementin ensimmäisen esiintymän tästä luettelosta, jos se on olemassa. |
| poistaFirst() | Tämä menetelmä poistaa ja palauttaa ensimmäisen elementin tästä luettelosta. |
| poistaFirstCurrence(Object o) | Tämä menetelmä poistaa määritetyn elementin ensimmäisen esiintymän tästä luettelosta (kun kuljetaan luetteloa päästä häntään). |
| poistaViimeinen() | Tämä menetelmä poistaa ja palauttaa viimeisen elementin tästä luettelosta. |
| poistaViimeinen esiintyminen (Object o) | Tämä menetelmä poistaa määritetyn elementin viimeisimmän esiintymän tästä luettelosta (kun kuljetaan luetteloa päästä häntään). |
| set(int index, E-elementti) | Tämä menetelmä korvaa tässä luettelossa määritetyn kohdan elementin määritetyllä elementillä. |
| koko() | Tämä menetelmä palauttaa tämän luettelon elementtien määrän. |
| splitter() | Tämä menetelmä luo myöhään sitovan ja nopean jakajan tämän luettelon elementtien päälle. |
| toArray() | Tämä menetelmä palauttaa taulukon, joka sisältää kaikki tämän luettelon elementit oikeassa järjestyksessä (ensimmäisestä viimeiseen elementtiin). |
| toArray(T[] a) | Tämä menetelmä palauttaa taulukon, joka sisältää kaikki tämän luettelon elementit oikeassa järjestyksessä (ensimmäisestä viimeiseen elementtiin); palautetun taulukon ajonaikainen tyyppi on määritetyn taulukon tyyppi. |
| toString() | Tämä menetelmä palauttaa merkkijonon, joka sisältää kaikki tämän luettelon elementit oikeassa järjestyksessä (ensimmäisestä viimeiseen elementtiin), jokainen elementti erotetaan pilkuilla ja merkkijono on suljettu hakasulkeissa. |
Alla on edellä mainittujen toimintojen toteutus:
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);> >}> }> |
>
>Lähtö
[D, A, E, B, C] [A]>

Yllä olevassa kuvassa AbstractList , CopyOnWriteArrayList ja AbstractSequentialList ovat luokat, jotka toteuttavat luettelorajapinnan. Jokaisessa mainitussa luokassa on toteutettu erillinen toiminnallisuus. He ovat:
- AbstractList: Tätä luokkaa käytetään toteuttamaan muokkaamaton lista, jolle tarvitsee vain laajentaa tätä AbstractList-luokkaa ja toteuttaa vain get()- ja size()-metodit. CopyOnWriteArrayList: Tämä luokka toteuttaa luettelorajapinnan. Se on ArrayListin parannettu versio, jossa kaikki muutokset (lisää, aseta, poista jne.) toteutetaan tekemällä luettelosta uusi kopio.
Erilaisten toimintojen suorittaminen LinkedListissä:
- Elementtien lisääminen
- Päivitetään elementtejä
- Elementtien poistaminen
- Iterointi elementtien yli
- To Array();
- Koko();
- poista First();
- poista viimeinen();
Operaatio 1: Elementtien lisääminen
Elementin lisäämiseksi ArrayList-luetteloon voimme käyttää add()-menetelmää . Tämä menetelmä on ylikuormitettu suorittamaan useita toimintoja eri parametrien perusteella. He ovat:
- add(Object): Tätä menetelmää käytetään elementin lisäämiseen LinkedList-luettelon loppuun. add(int index, Object): Tätä menetelmää käytetään elementin lisäämiseen LinkedList-luettelon tiettyyn hakemistoon.
Alla on yllä olevan toiminnon toteutus:
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);> >}> }> |
>
>Lähtö
[Geeks, For, Geeks]>
Operaatio 2: Elementtien muuttaminen
Elementtien lisäämisen jälkeen, jos haluamme muuttaa elementtiä, se voidaan tehdä käyttämällä set()-metodia . Koska LinkedList on indeksoitu, elementin indeksi viittaa elementtiin, jota haluamme muuttaa. Siksi tämä menetelmä ottaa indeksin ja päivitetyn elementin, joka on lisättävä kyseiseen indeksiin.
Alla on yllä olevan toiminnon toteutus:
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);> >}> }> |
iskcon täysi lomake
>
>Lähtö
Initial LinkedList [Geeks, Geeks, Geeks] Updated LinkedList [Geeks, For, Geeks]>
Operaatio 3: Elementtien poistaminen
Elementin poistamiseksi LinkedLististä voimme käyttää Remove()-menetelmää . Tämä menetelmä on ylikuormitettu suorittamaan useita toimintoja eri parametrien perusteella. He ovat:
- Remove(Object): Tätä menetelmää käytetään yksinkertaisesti poistamaan objekti LinkedList-luettelosta. Jos tällaisia objekteja on useita, objektin ensimmäinen esiintyminen poistetaan. remove(int index): Koska LinkedList on indeksoitu, tämä menetelmä ottaa kokonaislukuarvon, joka yksinkertaisesti poistaa linkkiluettelon kyseisessä indeksissä olevan elementin. Elementin poistamisen jälkeen päivitetään elementtien indeksit, samoin myös LinkedList-objekti, jolloin elementin/elementtien poistamisen jälkeen saadaan uusi List.
Alla on yllä olevan toiminnon toteutus:
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);> >}> }> |
>
>Lähtö
Initial LinkedList [Geeks, For, Geeks] After the Index Removal [Geeks, Geeks] After the Object Removal [Geeks]>
Toiminto 4: LinkedList-luettelon iterointi
LinkedListin kautta voi toistaa useita tapoja. Tunnetuimpia tapoja on käyttää perus-for-silmukkaa yhdessä get()-menetelmän kanssa elementin saamiseksi tietyssä indeksissä ja edistyneessä for-silmukassa.
Alla on yllä olevan toiminnon toteutus:
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 + ' '); } }> |
>
gimp suorakulmio piirtää
>Lähtö
Geeks For Geeks Geeks For Geeks>
Toiminto 4: Linkitetty lista To Arrayiin komennolla 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+>' '>);> >}> }> |
>
>Lähtö
LinkedList: [123, 12, 11, 1134] After converted LinkedList to Array: 123 12 11 1134>
Operaatio 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());> >}> }> |
>
>Lähtö
The size of the linked list is: 2>
Operaatio 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);> >}> }> |
>
>Lähtö
LinkedList:[10, 20, 30] The remove first element is: 10 Final LinkedList:[20, 30]>
Operaatio 8- removelast();
kuinka poistaa sarake postgresqlissa
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);> >}> }> |
>
>Lähtö
LinkedList:[10, 20, 30] The last element is removed: 30 Final LinkedList:[10, 20] The last element is removed: 20 Final LinkedList:[10]>
LinkedList-luokka Javassa on osa Java Collections Frameworkia ja tarjoaa linkitetyn listan toteutuksen List-käyttöliittymästä. Se mahdollistaa elementtien tallentamisen ja noudon kaksoislinkitetyssä luettelotietorakenteessa, jossa jokainen elementti on linkitetty edeltäjäänsä ja seuraaviin elementteihinsä.
Tässä on yksinkertainen esimerkki, joka osoittaa kuinka LinkedList-listaa käytetään Javassa:
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);> >}> >}> }> |
>
>Lähtö
0 1 2 3 4>
LinkedListin käytön edut Javassa:
- Dynaaminen koko: Kuten Vector, LinkedListin koko voi kasvaa tai pienentyä dynaamisesti, joten sinun ei tarvitse huolehtia alkuperäisen koon asettamisesta.
- Tehokkaat lisäykset ja poistot: LinkedList on tehokas tietorakenne listan keskelle olevien elementtien lisäämiseen tai poistamiseen, koska sinun tarvitsee vain muuttaa elementtien välisiä linkkejä sen sijaan, että siirrät kaikkia elementtejä lisäys- tai poistokohdan jälkeen.
- Joustava iterointi: Linkitetyn luettelon avulla voit iteroida luetteloa tehokkaasti kumpaankin suuntaan, koska jokaisella elementillä on viittaus sekä edeltäjäänsä että seuraaviin elementteihinsä.
LinkedListin käytön haitat Javassa:
- Suorituskyky: LinkedListin suorituskyky on hitaampi kuin ArrayList, kun kyse on yksittäisten elementtien käyttämisestä. Tämä johtuu siitä, että sinun täytyy kulkea luettelon läpi päästäksesi haluttuun elementtiin, kun taas ArrayList-sovelluksella voit yksinkertaisesti käyttää haluttua elementtiä indeksin avulla.
- Muistin lisäys: LinkedList vaatii enemmän muistia kuin ArrayList, koska jokainen elementti vaatii lisämuistia edeltäjä- ja seuraajaelementteihinsä oleville linkeille.
Hakuteos:
Hyvä hakuteos Java Collections Frameworkin ja LinkedListin oppimiseen on Naftalinin ja Wadlerin Java Collections. Tämä kirja tarjoaa kattavan katsauksen Java-kokoelmakehykseen, mukaan lukien LinkedList, ja sisältää monia esimerkkejä ja harjoituksia, jotka auttavat sinua ymmärtämään, kuinka näitä luokkia käytetään tehokkaasti.