Matriisiluettelo ja Yhdistetty luettelo ovat yleisiä termejä tietojen tallennuksessa ja noutamisessa. Vaikka tallennuslaitteita on paljon, lopulta ne riippuvat tallennusmekanismista. Nämä kaksi tallennusmekanismia sijoittavat tietosi tallennuslaitteisiin ja noutavat ne tarvittaessa. Katsotaanpa kuinka he tallentavat tietoja muistiin. Ryhmäluettelo käyttää peräkkäistä tallennusta, ja tietotiedot tallennetaan peräkkäin. Tämä on ehkä yksinkertaisempi säilytysmuoto - se välttää sekaannuksia. Kyllä, voimme noutaa seuraavan kohteen tai tiedot ryhmäluettelon seuraavasta muistipaikasta; se tallennetaan kuitenkin linkitettyjen luetteloon osoittimien avulla. Tarvitsemme tässä yhteydessä kaksi muistipaikkaa varastointia varten - yhden datalle ja toisen osoittimelle. Osoitin osoittaa seuraavan tiedon muistipaikan. Voimme helposti ymmärtää, että linkitetty luettelo ei koskaan tallenna tietoja peräkkäin; pikemminkin se käyttää satunnaista tallennusmekanismia. Osoittimet ovat avaintekijöitä muistin datapaikkojen paikantamisessa.
Olemme jo keskustelleet siitä, kuinka molemmat tallennusmekanismit sisällyttävät tietoja, ja voimme antaa termin 'dynaaminen taulukko' Array-luettelon sisäiselle tallennusjärjestelmälle. Se vain asettaa tietokappaleita peräkkäin - seuraa nimeä -, kun taas linkitetty luettelo käyttää seuraavaa kohdetta seuraamaan sisäistä luetteloa osoittimien avulla. Siksi se käyttää sisäistä linkitettyä luetteloa, kuten yksittäisesti tai kaksinkertaisesti linkitettyä luetteloa, seuraavien tietojen näyttämiseen.
Koska Array-luettelo tallentaa vain todelliset tiedot, tarvitsemme tilaa vain tallentamillemme tiedoille. Kääntäen, linkitetyssä luettelossa, käytämme myös osoittimia. Siksi tarvitaan kaksi muistipaikkaa, ja voidaan sanoa, että linkitetty luettelo kuluttaa enemmän muistia kuin Array-luettelo. Linkitetyn luettelon edullinen puoli on, että se ei koskaan vaadi jatkuvia muistin sijainteja tietojen tallentamiseksi, toisin kuin Array-luettelo. Osoittimet kykenevät pitämään seuraavan datapaikan sijaintia, ja voimme käyttää jopa pienempiä muistipaikkoja, jotka eivät ole jatkuvia. Muistin käytöstä osoittimilla on päärooli linkitetyssä luettelossa, samoin kuin niiden tehokkuudella.
Array-luettelossa edes tyhjä luettelo vaatii kokoa 10, mutta linkitetyn luettelon kanssa me ei tarvitse niin suurta tilaa. Voimme luoda tyhjän linkitetyn luettelon, jonka koko on 0. Myöhemmin voimme lisätä kokoa tarpeen mukaan.
Tietojen haku on yksinkertaisempaa ryhmäluettelossa, koska se tallentuu peräkkäin. Ainoa se on ensimmäisen datan sijainnin tunnistaminen; sieltä seuraavaan sijaintiin pääsee peräkkäin loput hakemaan. Se lasketaan kuten ensimmäinen datapaikka + 'n', missä 'n' on taulukkojonon tietojen järjestys. Yhdistetty luettelo viittaa alkuosoittimeen ensimmäisen datan sijainnin löytämiseksi, ja sieltä se viittaa kuhunkin dataan liittyvään osoittimeen seuraavan datapaikan löytämiseksi. Hakuprosessi on pääosin riippuvainen täällä olevista osoittimista, ja ne näyttävät meille tehokkaasti seuraavan tiedon sijainnin.
Ryhmäluettelo käyttää nolla-arvoa datan lopun merkitsemiseen, kun taas linkitetty luettelo käyttää nollaosoitinta tähän tarkoitukseen. Heti kun järjestelmä tunnistaa nollatiedot, taulukkoluettelo lopettaa seuraavan tiedonhaun. Samalla tavalla nollaosoitin estää järjestelmää siirtymästä seuraavaan tietojen hakuun.
Linkki-luettelon avulla voimme liikkua taaksepäin suuntaan laskevan ohjaimen () avulla. Meillä ei kuitenkaan ole tällaista mahdollisuutta ryhmäluettelossa - päinvastaisesta poikittaisesta tulee tässä ongelma.
Katsokaamme molempien tallennusmekanismien Java-syntaksia.
Matriisilistan luominen:
Lista arraylistsample = new ArrayList ();
Objektien lisääminen matriisilistaan:
Arraylistsample.add ( ”nimi1”);
Arraylistsample.add ( ”name2”);
Näin tuloksena oleva ryhmäluettelo näyttää - - [nimi1, nimi2].
Linkitetyn luettelon luominen:
Lista linkitettyjen luetteloiden näyte = uusi linkitetty lista ();
Objektien lisääminen linkitettyyn luetteloon:
Linkedlistsample.add ( ”nimi3”);
Linkedlistsample.add ( ”nimi4”);
Näin tuloksena oleva linkitetty luettelo näyttää - - [nimi3, nimi4].
Matriisiluettelo vie O (1) ajan kaiken tiedonhaun suorittamiseen, kun taas Yhdistetty luettelo vie u O (n) n: lleth tietojen haku. Siksi taulukkoluettelo käyttää aina vakioaikaa mihin tahansa tiedonhakuun, mutta linkitetyssä luettelossa käytetty aika riippuu datan sijainnista. Siksi Array-luettelot ovat aina parempi valinta Get- tai Search-toimintoihin.
Sekä taulukko- että linkitetyt luettelot vievät O (1) ajan tiedon lisäämiseen. Mutta jos taulukko on täynnä, ryhmäluettelon koon muuttaminen ja kohteiden kopioiminen uudempaan vie huomattavan paljon aikaa. Tällaisessa tapauksessa linkitetty luettelo on parempi valinta.
Poistamistoiminto vie melkein saman verran aikaa sekä ryhmäluettelossa että linkitetyssä luettelossa. Array-luettelossa tämä toimenpide poistaa tiedot ja siirtää sitten datan sijaintia uudemman taulukon muodostamiseksi - vie O (n) aikaa. Linkitetyssä luettelossa tämä toimenpide siirtyy tiettyyn dataan ja muuttaa osoittimen sijainteja uudemman luettelon muodostamiseksi. Läpikulun ja poiston aika on myös täällä O (n).
Tiedämme, että taulukkoluettelo käyttää sisäistä taulukkoa todellisten tietojen tallentamiseen. Siksi, jos jotain dataa poistetaan, niin kaikki tuleva data tarvitsee muistimuutoksen. Tämä vaatii tietysti paljon aikaa ja hidastaa asioita. Sellaista muistinsiirtoa ei vaadita linkitetyssä luettelossa, koska kaikki se muuttaa osoittimen sijaintia. Siksi linkitetty luettelo on nopeampi kuin ryhmäluettelo minkä tahansa tyyppisissä tallennusvälineissä. Tämä riippuu kuitenkin puhtaasti operaation tyypistä, ts. Hanki tai etsi -toiminnolle linkitetty luettelo vie paljon enemmän aikaa kuin taulukko-luettelo. Kun tarkastelemme yleistä suorituskykyä, voimme sanoa, että linkitetty luettelo on nopeampi.
Matriisiluettelo soveltuu parhaiten pienempiin tietovaatimuksiin, jos jatkuvaa muistia on saatavana. Mutta kun käsittelemme valtavia tietomääriä, jatkuvan muistin saatavuus toteuttaa tietojen tallennusmekanismit, olipa se pieni tai valtava. Seuraavaksi päätä, kumpi valita - ryhmäluettelo tai linkitetty luettelo. Voit edetä matriisiluettelon kanssa, kun tarvitset vain tallennusta ja tietojen hakua. Mutta luettelo voi auttaa sinua muutakin kuin manipuloimalla tietoja. Kun olet päättänyt, kuinka usein tietojen käsittely on tarpeen, on tärkeää tarkistaa, minkä tyyppisiä tietojen hakua yleensä suoritat. Kun kyseessä on vain Hanki tai Hae, Array-lista on parempi valinta. muissa toiminnoissa, kuten lisäämisessä tai poistamisessa, siirry linkitetyn luettelon kanssa.
Katsokaamme taulukkomuotojen eroja.
S.No | käsitteet | erot | |
Matriisilista | Linkitetty luettelo | ||
1 | Tietojen tallennusmuoti | Käyttää peräkkäistä tietojen tallennusta | Käyttää ei-peräkkäistä tietojen tallennusta |
2 | Sisäinen tallennusjärjestelmä | Ylläpitää sisäistä dynaamista taulukkoa | Ylläpitää linkitettyä luetteloa |
3 | Muistin käyttö | Vaatii muistia vain datalle | Vaatii muistitilaa myös tiedoille ja osoittimille |
4 | Alkuperäisen luettelon koko | Tarvitsee tilaa vähintään 10 kohteelle | Ei tarvitse tilaa ja voimme jopa luoda tyhjän linkitetyn luettelon, jonka koko on 0. |
5 | Tietojen haku | Laskee kuten ensimmäinen datapaikka + 'n', missä 'n' on taulukkojonon tietojen järjestys | Läpikulku ensimmäisestä tai viimeisestä asti vaadittavat tiedot vaaditaan |
6 | Tietojen loppu | Null-arvot merkitsevät loppua | Null-osoitin merkitsee loppua |
7 | Käänteinen liikkuminen | Ei salli sitä | Mahdollistaa sen laskevan ohjaimen avulla () |
8 | Luettelon luomisen syntaksi | Lista arraylistsample = new ArrayList ();
| Lista linkitettyjen luetteloiden näyte = uusi linkitetty lista ();
|
9 | Objektien lisääminen | Arraylistsample.add ( ”nimi1”);
| Linkedlistsample.add ( ”nimi3”);
|
10 | Hanki tai etsi | Kestää O (1) kerran ja on suorituskykyä parempi | Kestää O (n) aika ja suorituskyky riippuvat datan sijainnista |
11 | Lisää tai lisää | Kuluttaa O (1) ajan paitsi, kun taulukko on täynnä | Kuluttaa O (1) -aikaa kaikissa olosuhteissa |
12 | Poisto tai poisto | Kestää O (n) -aikaa | Kestää O (n) -aikaa |
13 | Milloin käyttää? | Kun mukana on paljon Get or Search -toimintoja; muistin saatavuuden tulisi olla parempi jo alussa | Kun Insert- tai Delete-toimintoja on paljon, ja muistin saatavuuden ei tarvitse olla jatkuvaa |