Diferența dintre C # Array și Listă

C # Array vs List este oriunde se întâlnesc abstractizarea și implementarea oamenilor în calcul. Un tablou este incredibil de mult legat de noțiunea hardware de memorie continuă, contiguă, cu fiecare parte identică ca mărime (deși în mod obișnuit aceste părți sunt adrese și deci se vorbește cu referenții care nu sunt identici). O listă ar putea fi o idee (de la aritmetică într-o măsură) oriunde sunt comandate piese și oriunde există (în mod normal) un început și un final, și astfel, oriunde este posibilă indexarea. Aceste 2 idei se aliniază destul de bine. Cu toate acestea, odată ce avem în vedere o listă ca un sort de date abstracte, o abordare a accesării și manipulării datelor, suntem în măsură să încălcăm o serie de reguli.

Ce este un Array?

Un tablou ar putea fi un sortiment secvențial de date comparabile la care vor fi accesate conform „indexului”. Este cel mai bun stil al unui sistem în care vremea ajunge să se păstreze într-o locație de memorie contiguă.

În Array, indexul începe de la zero, pentru a accesa partea primară a unui tablou „numarray”, ar trebui să fie scris ca numarray (0).

Un tablou ar putea fi o secțiune consecutivă a memoriei care ocupă n * dimensiune (tip) octeți, oriunde n este că lungimea tabloului și dimensiunea (tipul) este aceea că dimensiunea din memorie necesară pentru a stoca sortimentul de informații la care progresezi utilizați în cadrul tabloului. Acest lucru sugerează că, dacă doriți să formați un tablou de o sută de int-uri și fiecare int ocupă patru octeți, trebuie să fiți obligat să aveți o secțiune de memorie neutilizată de minim patru sute de octeți (100 * 4). Acest lucru implică, de asemenea, că matricea este destul de ieftină pentru a fi formată, dezlănțuită și folosită ca urmare a bucăților de memorie ale acestora.

Opțiuni Array: -

  • Informațiile sunt păstrate într-un tip de alocări de memorie continuă. fiecare jumătate urmează diferit, pur și simplu odată ce este în m / y. nu există nicio aleatorie în alocare.
  • Acestea oferă acces aleatoriu precum arr (0), arr (6) etc.
  • Există o alocare statică a memoriei. n acest lucru poate duce la risipa de memorie.
  • Există doar un stil de date în fiecare celulă a unui tablou.
  • Introducerea și ștergerea sunt ceva mai lungi.

Ce este o listă?

ArrayList ar putea fi un sortiment de obiecte de același tip sau diferite. Dimensiunile unui ArrayList sunt umflate sau tăiate dinamic conform necesității. Funcționează ca un tablou, însă, în contrast cu un tablou din ArrayList, lucrurile sunt alocate sau redistribuite dinamic, adică veți adăuga, elimina, indexa sau căuta date într-un sortiment foarte mare.

O listă, dar ar putea fi o structură complet diferită. Majoritatea implementărilor de listă sunt un amestec de noduri care stochează: unul. - Un preț și, 2. - Unul sau o mulțime de indicatori care mențin nodurile conectate între ele. Acest lucru sugerează că nu doriți doar o bucată enormă de memorie obținută cu o dimensiune suficient de mare pentru a transporta toate datele dvs., deoarece nodurile sunt împrăștiate în memoria voastră.

Opțiuni de listă: -

  • Informațiile sunt păstrate la întâmplare în componente. n fiecare jumătate este conectată la diferite prin intermediul unui indicator la celula următoare (n la celula precedentă, în cazul listei de legături duble)
  • Acestea vor fi accesate consecutiv datorită dependenței fiecărei jumătăți
  • Este alocat dinamic, ceea ce m / y este alocat fiecărei celule o dată procesarea cererii pentru aceasta. Astfel, nu există risipa de m / y
  • O singură celulă este împărțită în mai multe componente, fiecare având informații de diferite tipuri de date. Cu toate acestea, ultima trebuie să fie în esență indicatorul către o celulă care rezultă
  • Inserarea și ștergerea sunt mult mai ușoare și mai rapide. Și privirea este mai ușoară.

Comparație Față-Față între C # Array vs Listă

Mai jos se află diferența de top 5 între C # Array și Lista

Diferența cheie între C # Array față de listă

După cum vedeți, există multe diferențe între performanța C # Array și Lista. Să ne uităm la comparația de top între C # Array și Lista de mai jos -

  1. Array stochează date de același fel, în timp ce ArrayList stochează date în tipul obiectului care poate fi de diferite tipuri.
  2. Dimensiunea unui ArrayList crește dinamic, în timp ce dimensiunea Array rămâne statică pe parcursul programului.
  3. Operația de inserare și ștergere în ArrayList este mai lentă decât un Array.
  4. Array-urile sunt scrise cu putere, în timp ce Listele ArrayL nu sunt scrise puternic.
  5. Schițele aparțin sistemului. Array namespace în timp ce ArrayList aparține System. Spațiul de nume al colecțiilor.
  6. După ce selectați între Array și ArrayList, optați pentru ideea de opțiuni pe care trebuie doar să le implementați.

C # Array și tabel de comparare a listei

Mai jos este cea mai înaltă comparație între C # Array și Lista

S.No.

mulțime

Listă

1Schițele sunt continue în memorie, ceea ce face să fie epuizant (într-un sens de performanță) să inserați piese în mijlocul listei. Avantajul este că capacitatea de a efectua acces aleatoriu.Listele, de partea opusă, sunt părți care se desfășoară în memoria, se leagă de-a lungul. Aceasta permite o introducere simplă în listă, cu toate că accesul aleatoriu, în timp ce alte structuri de date nu se pot face.
2Un tablou ar putea fi un sistem, adică este o abordare particulară de organizare a datelor în dispozitivul de memorie.O listă este un tip de date abstracte, adică este orice structură de date care acceptă un grup specific de operații.
3Un tablou este o colecție de părți omogene.O listă este o colecție de elemente eterogene.
4Memoria Array alocată este statică și continuă.Memoria listă alocată este dinamică și aleatorie.
5Un utilizator nu trebuie să limiteze următoarea alocare a memoriei.Un utilizator trebuie să limiteze urmărirea locației următoare oriunde este alocat memoria.

Concluzie - C # Array vs List

Am văzut o comparație a utilizării memoriei de performanță C # Array și Listă în limba C #. Pentru viteză, este de obicei demn să placă matricile obișnuite. Profitul de performanță este esențial.

Listele sunt utilizate mult mai frecvent în C # decât matricile sunt, cu toate acestea, există anumite cazuri în care matricile vor fi (sau ar trebui) utilizate, împreună cu dacă datele dvs. este puțin probabil să crească semnificativ sau dacă faceți față unei cantități relativ mari de date. care va trebui să fie obligat să fie indexat în obicei.

Permiteți-mi să vă ofer 2 probe de liste care încalcă principiile unui tablou. Într-o listă de legături, fiecare parte indică o parte, urmând să așez pur și simplu o piesă de înlocuire între 2 părți existente, sau să scot una și să repar cele 2 rămase (precedentul și următorul); în timp ce voi accesa piese prin intermediul unui index, voi face acest lucru numai trecând dintr-o parte în asigurarea și investigarea, astfel încât nu este într-adevăr indexat. Un alt exemplu este că coada, oriunde voi impulsiona doar vârful și voi scoate de la început; dacă vreau să accesez piese prin intermediul unui index, este posibil, cu toate acestea, în mod clar, nu maltratez sortarea corectă a datelor abstracte. Nu contează dacă implementarea ar oferi acest lucru pur și simplu.

Articol recomandat

Acesta a fost un ghid pentru diferențele de top între C # Array și Listă. Aici vom discuta, de asemenea, diferențele cheie C # Array vs. Lista cu infografie și tabelul de comparație. De asemenea, puteți arunca o privire asupra următoarelor articole -

  1. Lista Java sau Lista Array
  2. Interfața C # vs clasa abstractă
  3. ASP.NET vs C #
  4. Java Vector vs ArrayList