Különbség a vázlista és a kapcsolódó listák között A különbség

Anonim

Hogyan tárolják az adatokat?

A gyűjteménylista és a Linkelt lista általános adatok, amikor az adatok tárolására és visszakeresésére vonatkoznak. Bár sok tárolóeszköz van, végső soron a tárolási mechanizmustól függenek. Ez a két tárolóeszköz elhelyezi az adatokat a tárolóeszközökön, és ha szükséges, visszakeresheti azokat. Vessünk egy pillantást arra, hogyan tárolják az adatokat a memóriájukban. Az Array lista sorozatos tárolást használ, és az adatok darabjai egymás után kerülnek tárolásra. Ez talán egy egyszerű tárolási forma - ez elkerüli a zavart. Igen, a következő elem vagy adatok letölthetők a tömblistából a következő memóriahelyről; azonban a hivatkozott listában található mutatók segítségével tárolja. Itt két tárolási helyre van szükség a tároláshoz - az egyik az adatokhoz, a másik a mutatóhoz. A mutató a következő adatok memóriahelyét jelöli meg. Könnyen megérthetjük, hogy a Linkelt lista soha nem tárolja az adatokat egymás után; inkább véletlen tárolási mechanizmust használ. A mutatók a legfontosabb elemek az adatok helyének a memóriában való elhelyezésében.

Dinamikus tömb és összekapcsolt lista

Már tárgyaltunk arról, hogy mindkét tárolási mechanizmust bevezettük, és dinamikus tömböt adhatunk az Array lista belső tárolási sémájának. Ezután csak egymás után rakja le az adatdarabokat - innen a név - míg a Linked lista belső listát használ a mutatók segítségével a következő elem nyomon követéséhez. Ezért egy belső, összekapcsolt listát használ, például egy egyenként vagy kétszeresen összekapcsolt listát, hogy megmutassa nekünk a következő adatokat.

Memóriahasználat

Mivel a Array lista csak az aktuális adatokat tárolja, csak az általunk tárolt adatokra van hely. Ezzel szemben a Linkelt listában a mutatókat is használjuk. Ezért két memóriahelyre van szükség, és azt mondhatjuk, hogy a hivatkozott lista több memóriát vesz fel, mint az Array listán. A Linked lista egyik előnyös oldala, hogy soha nem igényel folyamatos memóriahelyeket adataink tárolására, szemben az Array listával. A mutatók képesek a következő adathelyzet pozíciójának megtartására, és még kisebb memóriahelyeket is használhatunk, amelyek nem folyamatosak. Amikor a memóriahasználatról van szó, a mutatók a Linked listában főszerepet játszanak, és így hatékonysága is.

A kezdeti tömblisták és a kapcsolódó listák mérete

Az Array listával akár egy üres lista is 10-es méretű, de Linkelt listával nem kell egy ilyen hatalmas hely. Létrehozhatunk egy 0-os méretű, üres linkelt listát. A későbbiekben szükség szerint növelhető a méret.

Adatlekérdezés

Az adatlekérés egyszerűbb a sorrendben, mivel egymás után tárolja. Mindössze azonosítja az első adathelyet; onnan a következő helyet egymás után érik el a többiek letöltéséhez.Úgy számít ki, mint az első adathelyzet + 'n', ahol 'n' az Array listában szereplő adatok sorrendje. A Linkelt lista a kezdeti mutatót tartalmazza az első adathely megtalálásához, és onnan az egyes adatokhoz tartozó mutatót a következő adathely megkeresésére utalja. A visszakeresési folyamat elsősorban az itt bemutatott mutatóktól függ, és hatékonyan mutatják meg nekünk a következő adathelyet.

Adatok vége

A Array lista null értéket használ az adatok végének megjelölésére, míg a Linked listában null mutatót használ erre a célra. Amint a rendszer felismeri a nulladatokat, az Array lista leállítja a következő adatvisszaadást. Hasonló módon, a null pointer leállítja a rendszert a következő adatvisszatérés folytatására.

Reverse Traversal

A Linked lista lehetővé teszi számunkra, hogy fordított irányban haladjunk a downendingiterator () segítségével. Azonban nincs ilyen lehetőségünk egy Array-listán - a visszafordulás itt probléma.

Szintaxis

Nézzük mindkét tárolási mechanizmus Java Syntax-jét.

Array listák létrehozása:

Lista arraylistsample = új ArrayList ();

Objektumok hozzáadása a tömblistához:

Arraylistsample. add („name1”);

Arraylistsample. add („name2”);

Így fog megjelenni a keletkező Array-lista - [name1, name2].

Linkelt lista létrehozása:

List linkedlistsample = new linkedList ();

Objektumok hozzáadása a hivatkozott listához:

Linkedlistsample. add („NAME3”);

Linkedlistsample. add („NAME4”);

Így fog megjelenni a létrejövő Linkelt lista - [name3, name4].

Melyik a jobb a keresési vagy keresési művelethez?

Az Array lista O (1) időt vesz igénybe az adatkeresés futtatásához, míg a Linkelt lista az n th adatkereséshez u O (n). Ezért egy Array lista mindig állandó időt ad az adatkereséshez, de a Linkelt listában az idő függ az adatok helyétől. Ezért az Array-listák mindig jobb választás a Get vagy Search műveletekhez.

Melyik a jobb az REPLACEion vagy Addition művelethez?

Az Array és a Linkelt listák mindegyike O (1) időt vesz igénybe az adatok hozzáadásához. De ha a tömb tele van, akkor az Array lista jelentős időt vesz igénybe, hogy átméretezze, és másolja az elemeket az újabbakhoz. Ebben az esetben a Linked lista a jobb választás.

Melyik a jobb az eltávolítási művelethez?

Az eltávolítási művelet majdnem ugyanannyi időt vesz igénybe mind a Array listában, mind a Linked listában. Az Array listában ez a művelet törli az adatokat, majd eltolja az adatok pozícióját, hogy az újabb tömböt hozzon létre - ez O (n) időt vesz igénybe. A Linked (Linkelt) listában ez a művelet átkeredi az adott adatot, és megváltoztatja a mutatópozíciókat az újabb lista létrehozásához. Az elhaladás és az eltávolítás ideje O (n) is.

Melyik a gyorsabb?

Tudjuk, hogy egy Array lista belső tömböt használ a tényleges adatok tárolására. Ezért, ha minden adat törlődik, akkor az összes következő adat memóriaeltolást igényel.Nyilvánvaló, hogy ez jelentős időt igényel és lassítja a dolgokat. Az ilyen memória-váltás nem szükséges a Linkelt listában, mivel csak a mutató helyét változtatja meg. Ezért a Linkelt lista gyorsabb, mint bármely adattároló Array-listája. Ez azonban kizárólag a működés típusától függ, pl. e. a Get vagy Search művelethez a Linkelt lista sokkal több időt vesz igénybe, mint egy Array-lista. Amikor megnézzük az általános teljesítményt, azt mondhatjuk, hogy a Linkelt lista gyorsabb.

Mikor kell használni egy tömblistát és egy kapcsolódó listát?

Az Array-lista legalkalmasabb a kisebb adatigényhez, ahol folyamatos memória áll rendelkezésre. De amikor hatalmas mennyiségű adatot kezelünk, a folyamatos memória rendelkezésre állása biztosítja az adattárolási mechanizmusokat, függetlenül attól, hogy kicsik vagy nagyok. Ezután döntsük el, melyiket válasszuk - az Array listát vagy a Linked listát. Folytathatja a tömbök listáját, amikor csak az adatok tárolására és visszakeresésére van szüksége. De a lista segíthet az adatok manipulálásán túl. Miután eldöntötte, hogy milyen gyakran kell az adatok manipulálása, fontos ellenőrizni, hogy milyen típusú adatlekérést végez. Ha csak Get vagy Search, akkor az Array List a jobb választás; más műveletekhez, például a beillesztéshez vagy a törléshez, lépjen kapcsolatba a Linkelt listával.

Nézzük meg a különbségeket táblázatos formában.

S. Nem Fogalmak Különbségek
Array List Linkelt lista
1 Adattárolás Divat Szekvenciális adattárolást használ Nem szekvenciális adattárolást használ
2 < Belső tárolási rendszer Dinamikus tömbtartomány Kapcsolt lista fenntartása 3
Memóriahasználat Csak az adatokhoz szükséges memóriahely szükséges mutatók 4
Kezdeti lista mérete Szükséges hely legalább 10 elemre Nincs szükség helyre, és akár egy 0. méretű linkelt listát is létrehozhatunk. 5
Adatlekérdezés Az első adatpozícióhoz hasonlóan számít, mint az 'n', ahol 'n' az adat sorrendje a Array listában 6 < Adatok vége
Az Null értékek a végét jelölik A Null mutató a végét jelöli 7 Fordított átvezetés
Nem engedélyezi Lehetővé teszi a csökkenő terhelés) 8 Listatervezési szintaxis
Lista arraylistsample = új Array Lista (); List linkedlistsample = új linkedList (); 9

Objektumok hozzáadása

Arraylistsample. add („name1”); Linkedlistsample. add („NAME3”); 10

Get or Search

Vegyen O (1) időt és jobb a teljesítményben Vigye az O (n) időt és a teljesítmény függ az adatok pozíciójától 11 < Beszúrás vagy kiegészítés O (1) időt vesz igénybe, kivéve ha a tömb tele van
O (1) időt vesz igénybe minden körülmények között 12 Törlés vagy eltávolítás Vegyen O (n) időt
13 Mikor kell használni? Ha sok Get vagy Search művelet van folyamatban; a memória rendelkezésre állása még az elején is nagyobb legyen Ha sok beillesztési vagy törlési művelet van, és a memória rendelkezésre állásának nem kell folyamatosnak lennie