Forskel mellem matrixliste og linket liste

Hvordan gemmes data?

Array-liste og Linked-liste er almindelige udtryk, når det kommer til datalagring og -indhentning. Selvom der er mange lagringsenheder, afhænger de i sidste ende af opbevaringsmekanismen. Disse to lagringsmekanismer placerer dine data i lagerenhederne og henter dem efter behov. Lad os se på, hvordan de gemmer data i deres hukommelse. Array-listen bruger en sekventiel opbevaring, og datastykkerne gemmes efter hinanden. Dette er måske en enklere form for opbevaring - det undgår forvirring. Ja, vi kan hente det næste element eller data fra den næste hukommelsesplacering på array-listen; det gemmes dog ved hjælp af pegepunkter i den linkede liste. Her har vi brug for to hukommelsessteder til opbevaring - den ene til dataene, den anden til markøren. En markør adresserer hukommelsens placering af de næste data. Vi kan let forstå, at den tilknyttede liste aldrig lagrer data i rækkefølge; snarere bruger den en tilfældig lagringsmekanisme. Pegerne er nøgleelementerne i lokalisering af dataplaceringer i hukommelsen.

Dynamisk array og tilknyttet liste

Vi har allerede diskuteret, hvordan begge lagringsmekanismer sætter data i, og vi kan give et udtryk 'dynamisk array' for Array-listens interne lagringsskema. Det lægger bare datastykker efter hinanden - derfra navnet - mens den linkede liste bruger en intern liste ved hjælp af pegere til at spore det næste emne. Derfor bruger den en intern linket liste, som en enkelt eller dobbelt linket liste for at vise os de næste data.

Brug af hukommelse

Da Array-listen kun gemmer de faktiske data, har vi kun brug for plads til de data, vi gemmer. Omvendt, i den linkede liste bruger vi også pegepunkter. Derfor kræves to hukommelsesplaceringer, og vi kan sige, at den tilknyttede liste bruger mere hukommelse end Array-listen. En fordelagtig side af den linkede liste er, at den aldrig kræver kontinuerlige hukommelsesplaceringer for at gemme vores data, i modsætning til Array-listen. Pegerne er i stand til at holde positionen for den næste dataplacering, og vi kan endda bruge mindre hukommelsespladser, der ikke er kontinuerlige. Når det kommer til hukommelsesanvendelse, spiller pointere hovedrollen på den linkede liste, og det samme gør effektiviteten af ​​dem.

Størrelse på den første array-liste og den tilknyttede liste

Med Array-listen kræver endda en tom liste en størrelse på 10, men med en tilknyttet liste har vi ikke brug for en sådan enorm plads. Vi kan oprette en tom linket liste med en størrelse på 0. Senere kan vi øge størrelsen efter behov.

Dataindhentning

Dataindhentning er enklere i Array-listen, da de gemmes sekventielt. Alt det gør er at identificere den første datalokation; derfra åbnes det næste sted sekventielt for at hente resten. Det beregner som den første dataposition + 'n', hvor 'n' er rækkefølgen af ​​dataene i Array-listen. Den tilknyttede liste henviser til den indledende markør for at finde den første dataplacering, og derfra henviser den markøren, der er knyttet til hver data for at finde den næste dataplacering. Gendannelsesprocessen er hovedsageligt afhængig af pegepunkterne her, og de viser os faktisk den næste dataplacering.

Slut på data

Array-listen bruger en nul-værdi til at markere slutningen af ​​dataene, mens den tilknyttede liste bruger en null-pointer til dette formål. Så snart systemet genkender nul-data, stopper Array-listen den næste dataindhentning. På lignende måde forhindrer nulpinderen systemet i at fortsætte til næste dataindhentning.

Reverse Traversal

Den tilknyttede liste giver os mulighed for at køre i modsatte retninger ved hjælp af descendingiterator (). Vi har dog ikke en sådan facilitet på en Array-liste - omvendt gennemgang bliver et problem her.

Syntaks

Lad os se på Java Syntax for begge lagringsmekanismer.

Oprettelse af matrixliste:

Liste over arraylistsample = new ArrayList ();

Føjelse af objekter til Array-listen:

Arraylistsample.add ( ”navn1”);

Arraylistsample.add ( ”navn2”);

Sådan ser den resulterende Array-liste ud - [navn1, navn2].

Oprettelse af tilknyttet liste:

Liste linklistsample = new linkedList ();

Føjelse af objekter til den linkede liste:

Linkedlistsample.add ( ”NAME3”);

Linkedlistsample.add ( ”navn4”);

Sådan ser den resulterende linkede liste ud - [name3, name4].

 Hvilket er bedre til Get eller Search-operationen?

Array-listen tager O (1) tid at køre en hvilken som helst datasøgning, mens den tilknyttede liste tager u O (n) for nth datasøgning. Derfor bruger en matrixliste altid en konstant tid til enhver datasøgning, men i den tilknyttede liste afhænger den tid, det tager, af datapositionen. Derfor er matrixlister altid et bedre valg til Get- eller Search-operationer.

Hvilket er bedre til indsættelse eller tilføjelse?

Både Array-listen og den tilknyttede liste tager O (1) tid til data tilføjelse. Men hvis matrixen er fuld, tager Array-listen en betydelig mængde tid at ændre størrelsen på den og kopiere objekterne til den nyere. I et sådant tilfælde er den linkede liste det bedre valg.

Hvilket er bedre til fjernelsen?

Fjern-operationen tager næsten samme tid på både Array-listen og den tilknyttede liste. I Array-listen sletter denne operation dataene og skifter derefter placeringen af ​​dataene til at danne den nyere matrix - det tager O (n) tid. I den tilknyttede liste gennemgår denne operation til de bestemte data og ændrer markørpositioner for at danne den nyere liste. Tiden for gennemgang og fjernelse er også O (n) her.

Hvilket er hurtigere?

Vi ved, at en Array-liste bruger en intern matrix til at gemme de faktiske data. Derfor, hvis nogen data slettes, skal alle de kommende data have et hukommelsesskifte. Naturligvis kræver dette en betydelig mængde tid og bremser tingene. Et sådant hukommelsesskifte er ikke påkrævet på den linkede liste, da det hele gør, at ændre markørens placering. Derfor er en linket liste hurtigere end en Array-liste i nogen form for datalagring. Dette er imidlertid rent afhængig af typen af ​​operation, dvs. for Get eller Search-operationen, den tilknyttede liste tager meget mere tid end en Array-liste. Når vi ser på den samlede ydelse, kan vi sige, at den tilknyttede liste er hurtigere.

Hvornår skal man bruge en matrixliste og en sammenkoblet liste?

En Array-liste er bedst egnet til mindre datakrav, hvor kontinuerlig hukommelse er tilgængelig. Men når vi beskæftiger os med enorme mængder data, implementerer tilgængeligheden af ​​kontinuerlig hukommelse datalagringsmekanismerne, uanset om de er små eller store. Derefter skal du vælge, hvilken du skal vælge - Array-listen eller den tilknyttede liste. Du kan gå videre med en matrixliste, når du bare har brug for opbevaring og hentning af data. Men en liste kan hjælpe dig ud over det ved at manipulere data. Når du beslutter dig for, hvor ofte datamanipulation er påkrævet, er det vigtigt at kontrollere, hvilken type dataindhentning du normalt udfører. Når det kun er Get eller Search, er Array-listen det bedre valg. For andre operationer som Indsættelse eller Sletning skal du gå videre med den tilknyttede liste.

Lad os se på forskellene i tabelform.

S.No Begreber Forskelle
Array-liste Tilknyttet liste
1 Data Storage Mode Bruger sekventiel datalagring Bruger ikke-sekventiel datalagring
2 Internt oplagringsprogram Vedligeholder en intern dynamisk array Vedligeholder en linket liste
3 Brug af hukommelse Kræver hukommelsesplads bare for dataene Kræver hukommelsesplads til data såvel som for pegere
4 Størrelse på den oprindelige liste Har brug for plads til mindst 10 genstande Har ikke brug for plads, og vi kan endda oprette en tom linket liste over størrelse 0.
5 Dataindhentning Beregner som den første dataposition + 'n', hvor 'n' er rækkefølgen af ​​dataene i Array-listen Gennemgang fra første eller sidste indtil de krævede data kræves
6 Slut på data Nul-værdier markerer slutningen Null-markøren markerer slutningen
7 Reverse Traversal Tillader det ikke Tillader det ved hjælp af descendingiterator ()
8 Liste Oprettelse syntaks Liste over arraylistsample = new ArrayList ();

Liste linklistsample = new linkedList ();

9 Tilføjelse af objekter Arraylistsample.add ( ”navn1”);

Linkedlistsample.add ( ”NAME3”);

10 Hent eller søg Tager O (1) tid og er bedre i ydelsen Tager O (n) tid og ydeevne afhænger af datapositionen
11 Indsæt eller tilføj Forbruger O (1) tid, undtagen når matrixen er fuld Forbruger O (1) tid under alle omstændigheder
12 Sletning eller fjernelse Tager O (n) tid Tager O (n) tid
13 Hvornår skal bruges? Når der er masser af Get- eller Search-operationer, hukommelsestilgængeligheden bør være højere, selv ved starten Når der er masser af indsæt eller slet, og hukommelsestilgængeligheden behøver ikke at være kontinuerlig