logo

LinkedList Java

Susietas sąrašas yra dalis Kolekcijos sistema yra java.util pakete. Ši klasė yra dvigubai susieto sąrašo duomenų struktūros įgyvendinimas.

Pagrindinis skirtumas tarp įprasto susieto sąrašo ir dvigubai susieto sąrašo yra tas, kad dvigubai susietame sąraše yra papildoma rodyklė, paprastai vadinama ankstesne žymekliu, kartu su kita rodykle ir duomenimis, kurie yra atskirai susietame sąraše.



Konstruktoriai LinkedList:

Norėdami sukurti LinkedList, turime sukurti LinkedList klasės objektą. LinkedList klasę sudaro įvairūs konstruktoriai, leidžiantys sudaryti sąrašą. Šioje klasėje galimi šie konstruktoriai:

1. LinkedList(): Šis konstruktorius naudojamas tuščiam susietam sąrašui sukurti. Jei norime sukurti tuščią LinkedList pavadinimu ll, tada jį galima sukurti kaip:

LinkedList ll = naujas LinkedList();



2. Susietų sąrašas (C rinkinys): Šis konstruktorius naudojamas sutvarkytam sąrašui sukurti, kuriame yra visi nurodyto rinkinio elementai, kuriuos grąžina kolekcijos iteratorius. Jei norime sukurti LinkedList pavadinimu ll, tada jį galima sukurti kaip:

LinkedList ll = naujas LinkedList(C);

„Java LinkedList“ metodai:

Metodas apibūdinimas
pridėti (indeksas, E elementas) Šis metodas Įterpia nurodytą elementą nurodytoje šio sąrašo vietoje.
pridėti (ir ir) Šis metodas Prideda nurodytą elementą prie šio sąrašo pabaigos.
pridėti viską (int indeksas, rinkinys c) Šis metodas Į šį sąrašą įterpia visus nurodytos kolekcijos elementus, pradedant nuo nurodytos vietos.
pridėti viską (rinkinys c) Šis metodas prideda visus nurodytos kolekcijos elementus prie šio sąrašo pabaigos tokia tvarka, kokia juos grąžina nurodytos kolekcijos iteratorius.
addFirst(E e) Šis metodas Įterpia nurodytą elementą šio sąrašo pradžioje.
pridėti paskutinį(E e) Šis metodas Prideda nurodytą elementą prie šio sąrašo pabaigos.
aišku () Šis metodas pašalina visus elementus iš šio sąrašo.
klonas () Šis metodas grąžina negilią šio LinkedList kopiją.
yra (O objektas) Šis metodas grąžina teisingą, jei šiame sąraše yra nurodytas elementas.
descendingIterator() Šis metodas grąžina iteratorių virš elementų šiame sąraše atvirkštine seka.
elementas () Šis metodas nuskaito, bet nepašalina šio sąrašo galvutės (pirmojo elemento).
gauti (int index) Šis metodas grąžina elementą nurodytoje šio sąrašo vietoje.
getFirst () Šis metodas grąžina pirmąjį elementą šiame sąraše.
get Last () Šis metodas grąžina paskutinį šio sąrašo elementą.
indexOf (O objektas) Šis metodas grąžina pirmojo nurodyto elemento pasireiškimo šiame sąraše indeksą arba -1, jei šiame sąraše elemento nėra.
paskutinis indeksas (O objektas) Šis metodas grąžina paskutinio nurodyto elemento pasireiškimo šiame sąraše indeksą arba -1, jei šiame sąraše elemento nėra.
listIterator(int index) Šis metodas grąžina šio sąrašo elementų sąrašo iteratorių (tinkama seka), pradedant nuo nurodytos sąrašo vietos.
pasiūlymas (E e) Šis metodas Prideda nurodytą elementą kaip šio sąrašo uodegą (paskutinį elementą).
pasiūlyti pirmas (E ir) Šis metodas Įterpia nurodytą elementą šio sąrašo pradžioje.
pasiūlymas paskutinis (E e) Šis metodas Įterpia nurodytą elementą šio sąrašo pabaigoje.
žvilgtelėti () Šis metodas nuskaito, bet nepašalina šio sąrašo galvutės (pirmojo elemento).
peekFirst () Šis metodas nuskaito, bet nepašalina pirmąjį šio sąrašo elementą arba grąžina nulį, jei šis sąrašas tuščias.
peekLast() Šis metodas nuskaito paskutinį šio sąrašo elementą, bet nepašalina, arba grąžina nulį, jei šis sąrašas tuščias.
apklausa () Šis metodas nuskaito ir pašalina šio sąrašo galvutę (pirmą elementą).
apklausa Pirma () Šis metodas nuskaito ir pašalina pirmąjį šio sąrašo elementą arba grąžina nulį, jei šis sąrašas tuščias.
apklausaPaskutinė() Šis metodas nuskaito ir pašalina paskutinį šio sąrašo elementą arba grąžina nulį, jei šis sąrašas tuščias.
pop () Šis metodas iškelia elementą iš šio sąrašo atstovaujamo krūvos.
stumti (E ir) Šis metodas stumia elementą į krūvą, kurią rodo šis sąrašas.
pašalinti () Šis metodas nuskaito ir pašalina šio sąrašo galvutę (pirmą elementą).
pašalinti (int index) Šis metodas pašalina elementą nurodytoje šio sąrašo vietoje.
pašalinti (O objektas) Šis metodas pašalina pirmąjį nurodyto elemento pasireiškimą iš šio sąrašo, jei jis yra.
pašalinti pirmas () Šis metodas pašalina ir grąžina pirmąjį elementą iš šio sąrašo.
pašalinti Pirmą įvykį (O objektas) Šis metodas pašalina pirmąjį nurodyto elemento pasireiškimą šiame sąraše (sulenkiant sąrašą nuo galvos iki galo).
PašalintiLast() Šis metodas pašalina ir grąžina paskutinį elementą iš šio sąrašo.
pašalinti Paskutinį kartą (O objektas) Šis metodas pašalina paskutinį nurodyto elemento pasireiškimą šiame sąraše (sulenkiant sąrašą nuo galvos iki galo).
rinkinys (indeksas, E elementas) Šis metodas pakeičia elementą nurodytoje šio sąrašo vietoje nurodytu elementu.
dydis () Šis metodas grąžina šio sąrašo elementų skaičių.
skirstytuvas () Šiuo metodu sukuriamas vėlai įrišamas ir greitas šio sąrašo elementų skirstytuvas.
toArray () Šis metodas grąžina masyvą, kuriame yra visi šio sąrašo elementai tinkama seka (nuo pirmojo iki paskutinio elemento).
toArray(T[] a) Šis metodas grąžina masyvą, kuriame yra visi šio sąrašo elementai tinkama seka (nuo pirmojo iki paskutinio elemento); grąžinamo masyvo vykdymo laikas yra nurodyto masyvo tipas.
toString() Šis metodas grąžina eilutę, kurioje yra visi šio sąrašo elementai tinkama seka (nuo pirmojo iki paskutinio), kiekvienas elementas atskiriamas kableliais, o eilutė yra laužtiniuose skliaustuose.

Žemiau pateikiamas pirmiau minėtų operacijų įgyvendinimas:



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

>

>

Išvestis

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

List-ArrayList-in-Java-Depth-Study

Aukščiau pateiktoje iliustracijoje AbstractList , CopyOnWriteArrayList ir AbstractSequentialList yra klasės, kurios įgyvendina sąrašo sąsają. Kiekvienoje iš minėtų klasių įdiegtas atskiras funkcionalumas. Jie yra:

    AbstractList: ši klasė naudojama nekeičiamam sąrašui įgyvendinti, kuriam tereikia išplėsti šią AbstractList klasę ir įgyvendinti tik get() ir size() metodus. CopyOnWriteArrayList: ši klasė įgyvendina sąrašo sąsają. Tai patobulinta ArrayList versija, kurioje visi pakeitimai (pridėti, nustatyti, pašalinti ir t. t.) yra įgyvendinami sukuriant naują sąrašo kopiją.

Įvairių operacijų atlikimas „LinkedList“:

  • Elementų pridėjimas
  • Elementų atnaujinimas
  • Elementų pašalinimas
  • Elementų kartojimas
  • To Array();
  • Dydis ();
  • pašalinti First();
  • pašalinti paskutinį ();

1 operacija: Elementų pridėjimas

Norėdami įtraukti elementą į ArrayList, galime naudoti metodą add() . Šis metodas yra perkrautas, kad būtų galima atlikti kelias operacijas pagal skirtingus parametrus. Jie yra:

    add(Object): Šis metodas naudojamas elementui įtraukti LinkedList pabaigoje. add(int index, Object): Šis metodas naudojamas elementui įtraukti į tam tikrą LinkedList indeksą.

Žemiau pateikiamas aukščiau nurodytos operacijos įgyvendinimas:

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

>

>

Išvestis

[Geeks, For, Geeks]>

2 operacija: Keičiasi elementai

Pridėjus elementus, jei norime elementą pakeisti, tai galima padaryti naudojant set() metodą . Kadangi LinkedList yra indeksuotas, elementas, kurį norime pakeisti, yra nurodytas elemento indeksu. Todėl šis metodas paima indeksą ir atnaujintą elementą, kurį reikia įterpti į tą indeksą.

Žemiau pateikiamas aukščiau nurodytos operacijos įgyvendinimas:

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

duomenų ryšio sluoksnio protokolai
>

>

Išvestis

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

3 operacija: Elementų pašalinimas

Norėdami pašalinti elementą iš LinkedList, galime naudoti metodą remove() . Šis metodas yra perkrautas, kad būtų galima atlikti kelias operacijas pagal skirtingus parametrus. Jie yra:

    pašalinti (Objektas): Šis metodas naudojamas tiesiog pašalinti objektą iš LinkedList. Jei tokių objektų yra keli, tada pirmasis objekto įvykis pašalinamas. Remove(int index): Kadangi LinkedList yra indeksuojamas, šis metodas paima sveikojo skaičiaus reikšmę, kuri tiesiog pašalina elementą, esantį tame konkrečiame LinkedList indekse. Pašalinus elementą, atnaujinami elementų indeksai, taip pat atnaujinamas ir LinkedList objektas, ištrynus elementą/-us suteikiant naują sąrašą.

Žemiau pateikiamas aukščiau nurodytos operacijos įgyvendinimas:

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

>

>

Išvestis

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

4 operacija: LinkedList kartojimas

Yra keli būdai, kaip kartoti „LinkedList“. Garsiausi būdai yra naudoti pagrindinę for kilpą kartu su get() metodu, norint gauti elementą konkrečiame indekse ir išplėstinę for-ciklą.

Žemiau pateikiamas aukščiau nurodytos operacijos įgyvendinimas:

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

>

>

Išvestis

Geeks For Geeks Geeks For Geeks>

4 operacija: sąrašas susietas su To Array naudojant 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+>' '>);> >}> }>

>

>

Išvestis

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

Operacija 5-size();

objektų masyvas java

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

>

>

Išvestis

The size of the linked list is: 2>

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

>

>

Išvestis

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

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

>

>

Išvestis

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

„Java“ sukurta „LinkedList“ klasė yra „Java Collections Framework“ dalis ir pateikia „List“ sąsajos susieto sąrašo įgyvendinimą. Tai leidžia saugoti ir gauti elementus dvigubai susietoje sąrašo duomenų struktūroje, kur kiekvienas elementas yra susietas su pirmtaku ir įpėdiniu.

Štai paprastas pavyzdys, parodantis, kaip naudoti LinkedList Java:

Java




do ir while ciklas 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);> >}> >}> }>

>

>

Išvestis

0 1 2 3 4>

LinkedList naudojimo Java programoje pranašumai:

  1. Dinaminis dydis: kaip ir Vector, LinkedList dydis gali dinamiškai didėti arba mažėti, todėl jums nereikės nerimauti dėl pradinio dydžio nustatymo.
  2. Veiksmingi įterpimai ir trynimai: „LinkedList“ yra efektyvi duomenų struktūra, skirta elementams įterpti arba ištrinti sąrašo viduryje, nes reikia pakeisti tik nuorodas tarp elementų, o ne perkelti visus elementus po įterpimo ar ištrynimo taško.
  3. Lanksti iteracija: naudodami susietą sąrašą galite efektyviai kartoti sąrašą bet kuria kryptimi, nes kiekvienas elementas turi nuorodą ir į jo pirmtaką, ir į paskesnius elementus.

LinkedList naudojimo Java programoje trūkumai:

  1. Našumas: „LinkedList“ veikia lėčiau nei „ArrayList“, kai reikia pasiekti atskirus elementus. Taip yra todėl, kad norint pasiekti norimą elementą reikia pereiti sąrašą, o naudodami ArrayList galite tiesiog pasiekti norimą elementą naudodami indeksą.
  2. Papildoma atmintis: „LinkedList“ reikalauja daugiau atminties nei „ArrayList“, nes kiekvienam elementui reikia papildomos atminties nuorodoms į jo pirmtaką ir įpėdinį.

Žinynas:

Gera žinynas, norint sužinoti apie „Java Collections Framework“ ir „LinkedList“, yra „Naftalin“ ir „Wadler“ sukurtos „Java Collections“. Šioje knygoje išsamiai apžvelgiama Java kolekcijų sistema, įskaitant LinkedList, ir pateikiama daug pavyzdžių bei pratimų, padedančių suprasti, kaip efektyviai naudoti šias klases.