Erinevus ArrayListi ja LinkedListi vahel Java-s

Autor: Laura McKinney
Loomise Kuupäev: 3 Aprill 2021
Värskenduse Kuupäev: 13 Mai 2024
Anonim
Stream Api vs Foreach vs Iterator [Java Performance Test]
Videot: Stream Api vs Foreach vs Iterator [Java Performance Test]

Sisu


ArrayList ja LinkedList on järgmised Kollektsioon klassid ja mõlemad rakendavad Loend liides. Klass ArrayList loob loendi, mis on sisemiselt salvestatud a dünaamiline massiiv mis suureneb või väheneb, kui elemente lisatakse või kustutatakse. LinkedList loob ka loendi, mis salvestatakse sisemiselt kausta Kahekordselt Lingitud Loend. Mõlemat klassi kasutatakse elementide salvestamiseks loendisse, kuid suurim erinevus klasside ArrayList ja LinkedList vahel on see, et ArrayList võimaldab juhuslikku juurdepääsu nimekirja elementidele, nagu see töötab indeksipõhine andmestruktuur. Teisest küljest LinkedList ei luba juhuslikku juurdepääsu, kuna tal pole indekseid elementide otseseks juurdepääsuks, elemendi leidmiseks või loendist pääsemiseks peab ta loendist mööda minema.


Allpool toodud võrdlusdiagrammi abil arutame veel mõned erinevused ArrayListi ja LinkedListi vahel.

  1. Võrdlusdiagramm
  2. Definitsioon
  3. Peamised erinevused
  4. Järeldus

Võrdlusdiagramm

Võrdluse alusArrayListLinkedList
Põhiline ArrayList võimaldab juhuslikku juurdepääsu nimekirja elementidele.LinkedList ei luba juhuslikku juurdepääsu loendi elementidele.
Andmete struktuurElementide salvestamiseks kasutatav sisemine struktuur on dünaamiline massiiv.Elementide salvestamiseks kasutatav sisestruktuur on kahekordselt linkide loetelu.
PikendabArrayList laiendab klassi AbstarctList.LinkedList laiendab AbstractSequentialList.
RakendusedAbstractList rakendab loendi liidest.LinkedList rakendab nimekirja, deque, järjekorda.
Juurdepääs ArrayList võimaldab kiiremat juurdepääsu loendi elementidele.LinkedList võimaldab loendi elementidele juurdepääsu aeglasemalt.
ManipuleerimineArrayList kasutab loendi elementidega manipuleerimist aeglasemalt.LinkedList võimaldab loendi elementidega manipuleerimist kiiremini.
KäitumineArraylList käitub nimekirja rakendamisel loendina.LinkedList käitub nii nimekirjana kui ka järjekorda, kuna rakendab nii nimekirja kui ka järjekorda.


Määratlus ArrayList

AbstractList klassi määratleb Kogumisraamistik. See laieneb AbstarctList ja tööriistad Loend liides. ArrayList kasutab dünaamiline massiiv st muutuva pikkusega massiiv sisemise andmestruktuurina elementide salvestamiseks loendisse. ArrayListi vajadus tekib, kuna java massiiv on kindla pikkusega. Nii et see ei saa kasvada ega kahaneda, kuna elemente lisatakse või kustutatakse massiivist. Nii et peate eelnevalt teadma vajaliku massiivi suurust. Kuid massiivi nimekiri, mida rakendatakse klassi ArrayList abil, võib elementide massiivi lisamisel või kustutamisel kasvada ja kahaneda.

ArrayListi abil rakendatud massiiviloendile saab juurde pääseda juhuslikult kuna ArrayList tegutseb indeksi alusel. Nii et indeksi tundmisega pääsete otse nimekirja elementide juurde. ArrayListi on kolm konstruktorit:

ArrayList () ArrayList (kollektsioon <? Laieneb E> c) ArrayList (int maht)

esimene konstruktor rakendab tühja massiiviloendi. teine konstruktor rakendab massiivide nimekirja, mis on lähtestatud, kasutades Kollektsioon c elemente. kolmas ehitaja rakendab massiivide nimekirja koos mahutavus esitatud argumendis. ArrayListiga töötades on mõnikord vaja Collection ArrayList teisendada massiiviks. Seda saab teha helistades toArray ().

LinkedListi määratlus

Nagu ArrayList, LinkedList on ka a Kollektsioon klassikasutus kahekordselt seotud loetelu sisemise andmestruktuurina elementide loendisse salvestamiseks. LinkedList klass laieneb AbstractSequentialList ja rakendab Loend, Deque ja Järjekord liidesed. LinkedListi abil rakendatud lingitud loendile ei pääse juurde juhuslikult. Kui soovite ükskõik millise elemendi loendist alla laadida, peate selle elemendi otsimiseks loendit kordama.

LinkedListi klassis on kaks konstruktorit.

LinkedList () LinkedList (kollektsioon <? Laieneb E> c)

esimene ehitaja loob tühja lingitud nimekirja. teine ehitaja loob lingitud loendi, mis lähtestatakse elementidega Kollektsioon c.

LinkedListis on nimekirjaga manipuleerimine lihtne ja kiire. Selle põhjuseks on asjaolu, et kui lisate või kustutate loendis mis tahes elemendi, pole vaja elemente nihutada nagu ArrayListis. Kuid juurdepääs on aeglasem, kuna sellel pole elementide otseseks avamiseks indeksit.

  1. ArrayListi loendiregistrile pääseb juurde juhuslikult, kuna ArrayList võtab vastu massiivi indeksipõhise andmestruktuuri. Teisest küljest ei pääse LinkedListi rakendatud loendile juhuslikult juurde pääsema, kuna loendi konkreetse elemendi leidmiseks või sellele juurdepääsu saamiseks peate loendist mööda minema.
  2. Sisemine andmestruktuur, mida ArrayList kasutab loendi elementide salvestamiseks, on a dünaamiline massiiv mis võivad elementide loendisse lisamisel või kustutamisel kasvada või kahaneda. Sisemine andmestruktuur, mida LinkedList kasutab loendis olevate elementide salvestamiseks, on siiski kahekordselt seotud loetelu.
  3. ArrayList laiendab AbstractList klass, mis on ka kollektsiooniklass, samas kui LinkedList klass laieneb AbstractSequentialList klass, mis on jällegi Kollektsiooni klass.
  4. ArrayList klassi tööriistad Loend liides, samas kui LinkedList klass rakendab Loend, Järjekordja Deque liidesed.
  5. Elementidele juurdepääsuks loendis ArrayList rakendatud on kiiremini kuna sellel on indeksipõhine andmestruktuur. Teisest küljest ei ole loendis rakendatav indeksipõhine struktuur byLinkledList. Seega rakendatakse iteraator nimekirja kohal, et jõuda juurdepääsetava elemendini, mis teeb juurdepääsu aeglasemalt LinkedListis.
  6. Manipuleerimine on manipuleerimine ArrayListi abil rakendatud loendis, sest iga elemendi lisamisel või kustutamisel nihutatakse loendi elemente muudatuse tegemiseks. Teisest küljest on LinkedListi rakendatud loendis manipuleerimine kiirem, kuna see ei nõua elementide nihutamist loendis olevate elementide lisamisel või kustutamisel.
  7. ArrayList käitub nagu a nimekiri kui see rakendab loendiliidest, siis LinkedList tegutseb nimekiri ja järjekorda kuna see rakendab nii nimekirja kui ka järjekorda.

Järeldus:

Kui loendis on elemente sageli lisatud või kustutatud, tuleb kasutada LinkedListit, kuna see toimib manipuleerimise ajal paremini. Kui loendis rakendatakse sagedast otsingut, on ArrayList parim valik, kuna see toimib loendist elementidele juurdepääsu saamiseks paremini.