Forskel mellem Array List og Linked List Forskel mellem

Anonim

Hvordan gemmes data?

Array liste og tilknyttet liste er almindelige termer, når det kommer til datalagring og hentning. Selvom der er mange lagringsenheder, afhænger de i sidste ende af lagringsmekanismen. Disse to lagringsmekanismer placerer dine data i lagerenhederne og henter dem, når det er nødvendigt. Lad os se på, hvordan de gemmer data i deres hukommelse. Array-listen bruger en sekventiel lagring, og dataene gemmes efter hinanden. Dette er måske en enklere form for opbevaring - det undgår forvirring. Ja, vi kan hente det næste emne eller data fra den næste hukommelsessted i matrixlisten; Den gemmes dog ved hjælp af pegepinde på listen Tilsluttet. Her har vi brug for to hukommelsessteder til opbevaring - en til dataene, den anden for pegeren. En peger adresserer hukommelsesstedet for de næste data. Vi kan nemt forstå, at linket aldrig gemmer data i rækkefølge; Det bruger hellere en tilfældig lagringsmekanisme. Pointerne er nøgleelementerne i at lokalisere datalokalerne i hukommelsen.

Dynamisk Array og Linked List

Vi har allerede diskuteret, hvordan begge lagringsmekanismer sætter i data, og vi kan give et udtryk 'dynamisk array' til Array-listen intern lagringsplan. Det sætter bare data-stykker ene efter hinanden - dermed navnet - mens den tilknyttede liste bruger en intern liste ved hjælp af peger til at spore næste emne. Derfor bruger den en internlinket liste, som en enkelt eller dobbelt linket liste for at vise os de næste data.

Hukommelsesbrug

Som Array-liste gemmer kun de faktiske data, behøver vi kun plads til de data, vi gemmer. Omvendt bruger vi også peger i den linkede liste. Derfor er der brug for to hukommelsessteder, og vi kan sige, at den forbundne liste bruger mere hukommelse end Array-listen. En fordelagtig side af Linked List er, at det aldrig kræver kontinuerlige hukommelsessteder at gemme vores data, i modsætning til Array-listen. Pointerne kan holde positionen for den næste datalokation, og vi kan endda bruge mindre hukommelsesspor, som ikke er kontinuerlige. Når det kommer til hukommelsesbrug, spiller pegerne hovedrollen i den tilknyttede liste, og det gør også effektiviteten af ​​dem.

Størrelse på startlisteliste og tilknyttet liste

Med listen Array kræver en tom liste en størrelse på 10, men med en tilknyttet liste behøver vi ikke et så stort rum. Vi kan oprette en tom tilknyttet liste med en størrelse på 0. Senere kan vi øge størrelsen efter behov.

Data hentning

Data hentning er enklere i Array-listen, da den gemmer sekventielt. Alt det gør er at identificere den første datalokation; derfra, den næste placering er adgang til 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 refererer til den indledende pointer for at finde den første datalokation, og derfra refererer det markøren til hver data for at finde den næste datalokation. Hentningsprocessen er hovedsagelig afhængig af pegerne her, og de viser os effektivt den næste datalokation.

Slutning af data

Arraylisten bruger en null-værdi til at markere slutningen af ​​dataene, mens den tilknyttede liste bruger en nullpeger til dette formål. Så snart systemet genkender nulldata, stopper Array-listen den næste data-hentning. På lignende måde stopper nullpegeren systemet fra at gå videre til næste dataindhentning.

Reverse Traverse

Den linkede liste giver os mulighed for at krydse i omvendte retninger ved hjælp af descendingiterator (). Vi har imidlertid ikke en sådan facilitet i en Array-liste - omvendt kryds bliver et problem her.

Syntaks

Lad os se på Java-syntaksen af ​​begge lagermekanismer.

Oprettelse af array-liste:

Liste arraylistsample = new ArrayList ();

Tilføjelse af objekter i arraylisten:

Arraylistsample. tilføje (”navn1”);

Arraylistsample. tilføje (”navn2”);

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

Oprettelse af tilknyttet liste:

Liste linkedlistsample = new linkedList ();

Tilføjelse af objekter til den tilknyttede liste:

Linkedlistsample. tilføje (”NAME3”);

Linkedlistsample. tilføje (”navn4”);

Sådan ser den resulterende tilknyttede liste ud - [navn3, navn4].

Hvilket er bedre for Get eller Search operationen?

Arraylisten tager O (1) tid til at køre enhver datasøgning, mens den linkede liste tager dig O (n) til n th datasøgningen. Derfor bruger en Array-liste altid en konstant tid til datasøgning, men i den linkede liste afhænger den tid, der er taget, af dataens position. Derfor er Array lister altid et bedre valg til Get eller Search-operationer.

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

Begge Array-listen og den tilknyttede liste tager O (1) tid til datatillæg. Men hvis arrayet er fyldt, tager arraylisten lang tid til at ændre størrelsen og kopiere varerne til den nyere. I et sådant tilfælde er den tilknyttede liste det bedre valg.

Hvilken er bedre til fjernelse af drift?

Fjernbetjeningen tager næsten samme tid i både Array-listen og den tilknyttede liste. I Array-listen sletter denne operation dataene og derefter skifter dataens position til dannelse af nyere array - det tager O (n) tid. I den tilknyttede liste går denne operation til de bestemte data og ændrer pegepositioner for at danne den nyere liste. Tiden for traversal og fjernelsen er også O (n) her.

Hvilken er hurtigere?

Vi ved, at en Array-liste bruger en intern array til at gemme de faktiske data. Derfor, hvis nogen data slettes, skal alle de kommende data have et memory shift.Det kræver selvfølgelig en betydelig mængde tid og bremser tingene ned. Et sådant hukommelsesskifte er ikke påkrævet i listen Tilsluttet, da alt det er, er at ændre pegerens placering. Derfor er en tilknyttet liste hurtigere end en Array-liste i enhver form for datalagring. Dette er dog kun afhængig af typen af ​​operation, jeg. e. For Get eller Search-operationen tager den linkede liste meget mere tid end en Array-liste. Når vi ser på den overordnede ydeevne, kan vi sige, at den linkede liste er hurtigere.

Hvornår skal du bruge en array-liste og en tilknyttet liste?

En Array-liste passer bedst til mindre datakrav, hvor der er kontinuerlig hukommelse. Men når vi beskæftiger os med enorme mængder data, udnytter tilgængeligheden af ​​kontinuerlig hukommelse datalagringsmekanismerne, uanset om de er små eller store. Herefter bestemmer du hvilken du skal vælge - Array-listen eller den linkede liste. Du kan fortsætte med en matrixliste, når du bare skal gemme og hente data. Men en liste kan hjælpe dig ud over det ved at manipulere data. Når du først har besluttet, hvor ofte dataprofilering er påkrævet, er det vigtigt at kontrollere, hvilken type dataindhentning du normalt udfører. Når det kun er Få eller Søg, er Arraylisten det bedre valg; For andre operationer såsom Indsæt eller Sletning, fortsæt med den linkede liste.

Lad os se på forskellene i tabelform.

S. Ingen Begreber Forskelle
Array List Linked List
1 Dataopbevaring Mode Bruger sekventiel datalagring Bruger ikke-sekventiel datalagring
2 < Intern opbevaringskode Vedligeholder et internt dynamisk array Vedligeholder en tilknyttet liste 3
Brug af hukommelse Kræver hukommelsesplads kun for dataene Kræver også hukommelsesplads for data til pointers 4
Størrelsen på den oprindelige liste Har brug for plads til mindst 10 genstande Har ikke brug for plads, og vi kan endda oprette en tom Forbundet liste med størrelse 0. 5
Data hentning Beregner som den første dataposition + 'n', hvor 'n' er rækkefølgen af ​​dataene i Array-listen Går fra den første eller den sidste, indtil de krævede data er påkrævet 6 < Slutning af data
Nullværdierne markerer slutningen Nullpekeren markerer slutningen 7 Reverse Traverse
Tillader det ikke Tillader det ved hjælp af descenditerator () 8 Liste Oprettelse syntaks
Liste arraylistsample = new Array Liste (); Liste linkedlistsample = new linkedList (); 9

Tilføjelse af objekter

Arraylistsample. tilføje (”navn1”); Linkedlistsample. tilføje (”NAME3”); 10

Få eller søg

Tager O (1) tid og er bedre i performance Tager O (n) tid og ydeevne afhænger af positionen af ​​dataene 11 Indsæt eller tilføj
Forbruger O (1) tid, undtagen når arrayet er fuldt Forbruger O (1) tid under alle omstændigheder 12 Sletning eller fjernelse
Tager O (n) tid < Tager O (n) tid 13 Hvornår skal du bruge? Når der er mange Get eller Search-operationer involveret; hukommelsens tilgængelighed skal være højere selv ved starten
Når der er masser af Indsæt eller Slet operationer, og hukommelses tilgængeligheden ikke behøver at være kontinuerlig