Rozdiel medzi poľami C # Array a Zoznam

C # Array vs List je všade, kde sa stretávajú abstrakcie a implementácia ľudí v oblasti výpočtovej techniky. Pole je neuveriteľne veľa spojené s hardvérovou predstavou spojitej súvislej pamäte, pričom každá časť má rovnakú veľkosť (aj keď zvyčajne ide o adresy, a preto hovorte s referentmi, ktorých veľkosť nie je identická). Zoznam by mohol byť nápadom (od aritmetického do rozsahu) všade tam, kde sú diely usporiadané a všade tam, kde je (normálne) začiatok a koniec, a teda všade tam, kde je možné indexovanie. Tieto 2 myšlienky sa usporiadajú celkom dobre. Keď však uvažujeme o zozname ako o abstraktnom druhu údajov, o prístupe k údajom ao manipulácii s nimi, dokážeme porušiť niekoľko týchto pravidiel.

Čo je to pole?

Pole môže byť postupný sortiment porovnateľných údajov, ku ktorým sa bude pristupovať podľa „indexu“. Je to najlepší štýl systému, počas ktorého sa počasie udržiava na súvislom mieste v pamäti.

V poli Array sa index začína na nule, takže na prístup k primárnej časti poľa „numarray“ sa má písať ako numarray (0).

Pole by mohlo byť po sebe nasledujúcou časťou pamäte, ktorá zaberá n * veľkosť (typ) bajtov, kdekoľvek n je to, že dĺžka poľa a veľkosť (typ) je veľkosť v pamäti potrebná na uloženie informačného typu, do ktorého postupujete. použitie v rámci poľa. To naznačuje, že ak by ste chceli vytvoriť pole s počtom sto intov a každá int zaberá štyri bajty, možno budete musieť prinútiť mať nepoužívanú časť pamäte s minimálnou veľkosťou štyristo bajtov (100 * 4). To navyše znamená, že pole je dosť lacné na vytváranie, uvoľnenie a použitie ako výsledok ich kúskov pamäte.

Možnosti poľa: -

  • Informácie sa uchovávajú v určitom type nepretržitých alokácií pamäte. každá polovica nasleduje inak, len akonáhle je v m / r. pri prideľovaní neexistuje náhodnosť.
  • Poskytujú náhodný prístup ako arr (0), arr (6) atď.
  • Existuje statická alokácia pamäte. n môže to mať za následok stratu pamäti.
  • V každej bunke poľa existuje iba 1 štýl údajov.
  • Vkladanie a mazanie sú trochu dlhšie intenzívne.

Čo je zoznam?

ArrayList môže byť sortiment objektov rovnakého alebo odlišného typu. Rozmery súboru ArrayList sa podľa potreby dynamicky nafukujú alebo znižujú. Funguje to ako pole, na rozdiel od poľa v poli ArrayList sa však veci dynamicky prideľujú alebo prideľujú, tj budete pridávať, odstraňovať, indexovať alebo vyhľadávať údaje vo veľmi širokom sortimente.

Zoznam, ale môže to byť úplne iná štruktúra. Väčšina implementácií zoznamu je kombináciou uzlov, ktoré ukladajú: jeden. - Jedna cena a 2. - Jeden alebo veľa ukazovateľov, ktoré udržiavajú prepojené uzly. To naznačuje, že jednoducho nechcete, aby sa do pamäte prenášali všetky údaje, ktoré sú dostatočne veľké na prenos všetkých vašich údajov, pretože uzly sú rozptýlené v pamäti.

Možnosti zoznamu: -

  • Informácie sa v zložkách náhodne uschovávajú. n každá polovica je spojená s iným prostredníctvom ukazovateľa na nasledujúcu bunku (n k predchádzajúcej bunke len v prípade zoznamu dvojitých odkazov)
  • Vďaka závislosti každej polovice majú byť prístupné po sebe
  • Je dynamicky pridelené, čo znamená, že m / y sa pridelí každej bunke, akonáhle o to proces požiada. Neexistuje teda m / y plytvanie
  • Jedna bunka je rozdelená do niekoľkých komponentov, z ktorých každá má informácie rôzneho druhu. Posledným však musí byť ukazovateľ na nasledujúcu bunku
  • Vkladanie a mazanie sú oveľa jednoduchšie a rýchlejšie. Pozerať sa tiež je jednoduchšie.

Porovnanie Head to Head medzi C # Array vs List

Nižšie je uvedený päť najlepších rozdielov medzi zoznamom C # Array a List

Kľúčový rozdiel medzi zoznamom C # polí a zoznamom

Ako vidíte, existuje veľa rozdielov medzi výkonom C # Array a Zoznamom. Pozrime sa na vrchol Porovnanie medzi C # Array vs Zoznam nižšie -

  1. Array ukladá údaje rovnakého druhu, zatiaľ čo ArrayList ukladá údaje v rámci typu objektu, ktorý môže byť rôzneho druhu.
  2. Veľkosť súboru ArrayList rastie dynamicky, zatiaľ čo veľkosť poľa zostáva v rámci programu statická.
  3. Operácia vkladania a mazania v ArrayList je pomalšia ako Array.
  4. Polia sú výrazne napísané strojom, zatiaľ čo polia ArrayLists nie sú mocne napísané.
  5. Polia patria do systému. Menný priestor poľa, zatiaľ čo ArrayList patrí do systému. Menný priestor zbierok.
  6. Po výbere medzi Array a ArrayList sa rozhodnite pre predstavu o ich možnostiach, ktoré musíte implementovať.

Porovnávacia tabuľka C # Array vs

Nižšie je najvyššie porovnanie medzi C # Array vs List

S.No.

rad

zoznam

1Polia sú nepretržité v pamäti, takže je vyčerpávajúce (v zmysle výkonu) vkladanie častí do stredu zoznamu. Výhodou je, že možnosť vykonávať náhodný prístup.Zoznamy, na druhej strane, sú časti rozložené v pamäti, prepojené. To umožňuje priame vloženie do zoznamu, náhodný prístup, aj keď nie ďalšie dátové štruktúry, nie je uskutočniteľný.
2Pole môže byť systém, to je potrebné spomenúť, je to zvláštny prístup k usporiadaniu údajov v pamäťovom zariadení.Zoznam je abstraktný dátový typ, to znamená, že je to akákoľvek dátová štruktúra, ktorá podporuje špecifickú skupinu operácií.
3Pole je súbor homogénnych častí.Zoznam je zbierka heterogénnych prvkov.
4Pridelená pamäť poľa je statická a nepretržitá.Pridelená pamäť zoznamu je dynamická a náhodná.
5Užívateľ nemusí obmedzovať sledovanie ďalšieho prideľovania pamäte.Užívateľ musí obmedziť umiestnenie ďalšieho miesta, kdekoľvek je pridelená pamäť.

Záver - C # Array vs List

V rámci jazyka C # sme videli porovnanie využitia výkonnosti pamäte C # Array vs List. Pre rýchlosť je zvyčajne vhodné mať radšej ako bežné polia. Zisk výkonnosti je rozhodujúci.

Zoznamy sa používajú oveľa častejšie v C # ako sú polia, existujú však prípady, keď sa polia budú (alebo by sa mali) používať spolu s prípadmi, keď je nepravdepodobné, že vaše údaje významne porastú alebo ak sa vyrovnáte s pomerne veľkým množstvom údajov ktoré budú musieť byť obvykle indexované.

Dovoľte mi ponúknuť 2 ukážky zoznamov, ktoré porušujú princípy súboru. V zozname odkazov každá časť ukazuje na nasledujúcu časť, takže jednoducho vložím náhradný diel medzi 2 existujúce súčasti, alebo jednu odoberiem a opravím zvyšné 2 (predchádzajúce a nasledujúce); keďže k častiam pristupujem prostredníctvom indexu, urobím to výlučne presunutím sa z jednej časti k zabezpečeniu a vyšetrovaniu, takže to nebude skutočne indexované. Ďalším príkladom je to, že rad, kdekoľvek budem len zvyšovať špičku a odoberiem od začiatku; ak chcem získať prístup k častiam prostredníctvom indexu, je to uskutočniteľné, ale jednoznačne nemýlim správny druh abstraktných údajov. Nezáleží na tom, či by to implementácia dala jednoducho.

Odporúčaný článok

Toto bol sprievodca pre najväčšie rozdiely medzi C # Array vs List. Tu diskutujeme aj kľúčové rozdiely v C # Array vs List s infografikou a porovnávacou tabuľkou. Môžete sa tiež pozrieť na nasledujúce články -

  1. Zoznam Java alebo zoznam polí
  2. C # Rozhranie vs Abstraktná trieda
  3. ASP.NET vs C #
  4. Java Vector vs ArrayList

Kategórie: