Skirtumas tarp „ArrayList“ ir „LinkedList“ „Java“

Autorius: Laura McKinney
Kūrybos Data: 3 Balandis 2021
Atnaujinimo Data: 7 Gegužė 2024
Anonim
Skirtumas tarp „ArrayList“ ir „LinkedList“ „Java“ - Technologija
Skirtumas tarp „ArrayList“ ir „LinkedList“ „Java“ - Technologija

Turinys


ArrayList ir LinkedList yra Kolekcija klases, ir abi jos įgyvendina Sąrašas sąsaja. „ArrayList“ klasė sukuria sąrašą, kuris yra saugomas dinamiškas masyvas kuris didėja ar mažėja, nes elementai pridedami arba ištrinami iš jo. „LinkedList“ taip pat sukuria sąrašą, kuris yra saugomas Dvigubai Susieta Sąrašas. Abi klasės naudojamos elementų saugojimui sąraše, tačiau pagrindinis skirtumas tarp klasių ArrayList ir LinkedList yra tas, kad „ArrayList“ leidžia atsitiktine prieiga prie sąrašo elementų, nes jis veikia indeksų pagrindu duomenų struktūra. Kita vertus, „LinkedList“ neleidžia atsitiktinės prieigos, nes neturi tiesioginių prieigos elementų rodyklių, ji turi pereiti sąrašą, norėdama gauti ar pasiekti elementą iš sąrašo.

Toliau pateiktoje palyginimo lentelės pagalba aptarsime dar keletą „ArrayList“ ir „LinkedList“ skirtumų.


  1. Palyginimo diagrama
  2. Apibrėžimas
  3. Pagrindiniai skirtumai
  4. Išvada

Palyginimo diagrama

Palyginimo pagrindas„ArrayList“„LinkedList“
Pagrindinis „ArrayList“ suteikia galimybę atsitiktine prieiga prie sąrašo elementų.„LinkedList“ neleidžia atsitiktine prieiga prie sąrašo elementų.
Duomenų struktūraElementų saugojimui naudojama vidinė struktūra yra dinaminis masyvas.Elementams saugoti naudojama vidinė struktūra yra dvigubų nuorodų sąrašas.
Išplečia„ArrayList“ pratęsia „AbstarctList“ klasę.„LinkedList“ išplečia „AbstractSequentialList“.
Padargai„AbstractList“ įgyvendina Sąrašo sąsają.„LinkedList“ įgyvendina „List“, „Deque“, „Queue“.
Prieiga ArrayList prieiga prie sąrašo elementų yra greitesnė.„LinkedList“ prieiga prie sąrašo elementų yra lėtesnė.
Manipuliacija„ArrayList“ manipuliavimas sąrašo elementais yra lėtesnis.„LinkedList“ greičiau manipuliuoja sąrašo elementais.
Elgesys„ArraylList“ elgiasi kaip sąrašas, nes įgyvendina sąrašą.„LinkedList“ elgiasi kaip „List“ ir „Queue“, nes įgyvendina „List“ ir „Queue“ abu.


Apibrėžimas ArrayList

„AbstractList“ klasė yra apibrėžta Kolekcijos sistema. Jis tęsiasi „AbstarctList“ ir padargai Sąrašas sąsaja. „ArrayList“ naudoja dinaminis masyvas y., kintamo ilgio masyvas kaip vidinė duomenų struktūra elementų saugojimui sąraše. „ArrayList“ poreikis kyla, nes „Java“ masyvas yra fiksuoto ilgio. Taigi jis negali augti ar mažėti, nes elementai pridedami arba ištrinami iš masyvo. Taigi jūs turite iš anksto žinoti reikiamo masyvo dydį. Masyvų sąrašas, įgyvendinamas naudojant „ArrayList“ klasę, gali išaugti ir mažėti, nes elementai pridedami arba ištrinami iš masyvo.

Masyvų sąrašą, įdiegtą naudojant „ArrayList“, galima pasiekti atsitiktinai kaip „ArrayList“ veikia indekso pagrindu. Taigi žinodami rodyklę galite tiesiogiai pasiekti sąrašo elementą. Yra trys „ArrayList“ konstruktoriai:

ArrayList () ArrayList (Kolekcija <? Tęsiasi E> c) ArrayList (vidinė talpa)

Pirmas konstruktorius įgyvendina tuščią masyvų sąrašą. antra konstruktorius įgyvendina masyvų sąrašą, inicijuotą naudojant Kolekcija c elementai. trečias konstruktorius įgyvendina masyvų sąrašą su talpa pateiktame argumente. Dirbdami su „ArrayList“, kartais reikės konvertuoti „Collection ArrayList“ į masyvą. Tai galima padaryti paskambinus „toArray“ ().

„LinkedList“ apibrėžimas

Kaip „ArrayList“, „LinkedList“ taip pat yra a Kolekcija klasės reikmėms dvigubai susietas sąrašas kaip vidinę duomenų struktūrą sąrašo elementams laikyti. „LinkedList“ klasė tęsiasi „AbstractSequentialList“ ir įgyvendina Sąrašas, Dekoti ir Eilė sąsajos. Susietų sąrašas, įgyvendintas naudojant „LinkedList“, negali būti pasiekiamas atsitiktine tvarka. Jei norite iš sąrašo nuskaityti bet kurį elementą, turite jį pakartoti, kad galėtumėte ieškoti to elemento.

„LinkedList“ klasėje yra du konstruktoriai.

„LinkedList“ () „LinkedList“ (kolekcija <? Tęsiasi E> c)

Pirmas konstruktorius sukuria tuščią susietų sąrašą. antra konstruktorius sukuria susietą sąrašą, inicijuotą su Kolekcija c.

„LinkedList“ manipuliuoti sąrašu yra lengva ir greita. Taip yra todėl, kad jei pridėsite arba ištrinsite bet kurį elementą iš sąrašo, tada nereikia perkelti elementų kaip „ArrayList“. Bet prieiga yra lėtesnė, nes ji neturi indekso tiesiogiai pasiekti elementus.

  1. Į sąrašą, kurį įgyvendina „ArrayList“, galima patekti atsitiktine tvarka, nes „ArrayList“ priima rodyklėmis pagrįstą masyvo duomenų struktūrą. Kita vertus, prie „LinkedList“ įdiegto sąrašo negalima patekti atsitiktine tvarka, nes norėdami gauti ar pasiekti tam tikrą sąrašo elementą, turite pereiti sąrašą.
  2. Vidinė duomenų struktūra, kurią „ArrayList“ naudoja sąrašo elementams saugoti, yra a dinaminis masyvas kurie gali augti ar trauktis, kai elementai pridedami arba išbraukiami iš sąrašo. Tačiau vidinė duomenų struktūra, kurią „LinkedList“ naudoja elementų sąraše saugojimui, yra dvigubai susietas sąrašas.
  3. „ArrayList“ pratęsia „AbstractList“ klasė, kuri taip pat yra kolekcijos klasė, tuo tarpu „LinkedList“ klasė tęsiasi „AbstractSequentialList“ klasė, kuri vėlgi yra Kolekcijos klasė.
  4. „ArrayList“ klasės padargai Sąrašas sąsaja, o „LinkedList“ klasė įgyvendina Sąrašas, Eilėir Dekoti sąsajos.
  5. Prieiga prie elementų iš sąrašo, įdiegto naudojant „ArrayList“ yra greičiau nes turi indeksais pagrįstą duomenų struktūrą. Kita vertus, sąraše, kurį įgyvendina byLinkledList, nėra indeksų pagrindu sukurtos struktūros. Taigi, norint pasiekti elementą, kurį reikia pasiekti, iteratorius taikomas visame sąraše lėčiau „LinkedList“.
  6. Manipuliacija yra manipuliacija sąraše, įgyvendinamame naudojant „ArrayList“, nes kiekvieną kartą pridedant ar išbraukiant elementą iš sąrašo, sąrašo elementai pasislenka, kad būtų galima atlikti pakeitimą. Kita vertus, „LinkedList“ įgyvendintame sąraše manipuliacija yra greitesnė, nes nereikia papildyti sąrašo elementų ar juos išbraukti iš sąrašo.
  7. „ArrayList“ elgiasi taip: sąrašą kai ji įgyvendina Sąrašo sąsają, tuo tarpu „LinkedList“ veikia kaip sąrašą ir eilė nes ji įgyvendina tiek sąrašą, tiek eilę.

Išvada:

Kai sąrašo elementai dažnai pridedami arba ištrinami, reikia naudoti „LinkedList“, nes jis geriau veikia manipuliavimo metu. Jei sąraše naudojama dažna paieška, geriausias pasirinkimas yra „ArrayList“, nes jis veikia geriau pasiekdamas elementus iš sąrašo.