Rozdíl mezi C # Array vs List

C # Array vs List je všude, kde se setkává abstrakce a implementace lidí v oblasti výpočetní techniky. Pole je neuvěřitelně spoutané s hardwarovou představou spojité, souvislé paměti, přičemž každá část má stejnou velikost (i když obvykle jsou tyto části adresy, a tak si promluvte s neidenticky velkými referenty). Seznam by mohl být myšlenkou (od aritmetiky do určité míry), kdekoli jsou díly objednány a kdekoli (obvykle) začátek a konec, a tedy kdekoli je možné indexování. Tyto 2 nápady se uspořádají celkem dobře. Jakmile však uvažujeme o seznamu jako o abstraktním druhu dat, o přístupu k datům ao manipulaci s nimi, můžeme porušit řadu těchto pravidel.

Co je pole?

Pole by mohlo být sekvenčním sortimentem srovnatelných dat, ke kterým bude přistupováno podle „indexu“. Je to nejlepší styl systému, během kterého se počasí udržuje na souvislém paměťovém místě.

V poli Array začíná index na nule, takže pro přístup k primární části pole matice „numarray“ by měl být zapsán jako numarray (0).

Pole může být po sobě jdoucí část paměti, která zabírá n * velikost (typ) bajtů, kdekoli n je to, že délka pole a velikost (typ) je ta velikost v paměti, která je potřebná k uložení informací, k nimž směřujete použití v rámci pole. To naznačuje, že pokud byste chtěli vytvořit pole se stovkou ints a každá int zabírá čtyři bajty, možná budete muset být nuceni mít nevyužitou paměťovou sekci minimálně čtyři sta bajtů (100 * 4). To navíc znamená, že pole je docela levné, aby se vytvořilo, uvolnilo a použilo jako výsledek jejich kousků paměti.

Možnosti pole: -

  • Informace jsou uchovávány v určitém typu nepřetržitého přidělení paměti. každá polovina následuje jinak jednoduše, jakmile je to v m / y. neexistuje žádná náhodnost při přidělování.
  • Poskytují náhodný přístup jako arr (0), arr (6) atd.
  • Existuje statická alokace paměti. n může to vést ke ztrátě paměti.
  • V každé buňce pole je pouze 1 styl dat.
  • Vkládání a mazání jsou o něco delší.

Co je seznam?

ArrayList by mohl být sortiment objektů stejného nebo odlišného typu. Rozměry seznamu ArrayList jsou dynamicky nafouknuty nebo seříznuty podle potřeby. Funguje to jako pole, ale na rozdíl od pole v ArrayListu jsou věci dynamicky přidělovány nebo přidělovány, tj. Přidáváte, odstraňujete, indexujete nebo lovíte data ve velmi širokém sortimentu.

Seznam, ale může to být úplně jiná struktura. Většina implementací seznamu je směs uzlů, které ukládají: jeden. - Jedna cena a 2. - Jeden nebo mnoho ukazatelů, které udržují uzly mezi nimi propojené. To naznačuje, že prostě nechcete, aby byl k dispozici obrovský kus dostupné paměti s dostatečně velkou velikostí, aby nesl všechna vaše data, protože uzly jsou rozptýleny v paměti.

Možnosti seznamu: -

  • Informace jsou u komponent uchovávány náhodně. n každá polovina je připojena k jinému přes ukazatel na další buňku (n k předchozí buňce jen v případě seznamu dvojitých odkazů)
  • Díky závislosti každé poloviny jsou přístupné po sobě
  • Je dynamicky přiděleno, že m / y je přiděleno každé buňce, jakmile o ni proces požádá. Neexistuje tedy žádná ztráta m / y
  • Jedna buňka je rozdělena do několika složek, z nichž každá má informace o různých druzích dat. Poslední v podstatě však musí být ukazatel na následující buňku
  • Vkládání a mazání jsou mnohem jednodušší a rychlejší. Dívat se ven je také snazší.

Porovnání mezi hlavami mezi C # Array vs List

Níže je pět nejlepších rozdílů mezi C # Array vs List

Klíčový rozdíl mezi C # Array vs List

Jak vidíte, existuje mnoho rozdílů mezi výkonem C # Array vs List. Podívejme se na horní Porovnání mezi C # Array vs Seznam níže -

  1. Array ukládá data stejného druhu, zatímco ArrayList ukládá data v rámci typu objektu, který může být různého druhu.
  2. Velikost pole ArrayList dynamicky roste, zatímco velikost pole zůstává v celém programu statická.
  3. Operace vkládání a mazání v ArrayList je pomalejší než Array.
  4. Pole jsou mocně psána, zatímco pole ArrayLists nejsou mocně psána.
  5. Pole patří do systému. Jmenný prostor ArrayList, zatímco ArrayList patří do System. Jmenný prostor sbírek.
  6. Jakmile si vyberete mezi Array a ArrayList, rozhodněte se pro představu o jejich možnostech, které stačí implementovat.

Tabulka porovnávání C # Array vs List

Níže je nejvyšší srovnání mezi C # Array vs List

S.No.

Pole

Seznam

1Pole jsou v paměti spojitá, takže je vyčerpání (ve smyslu výkonu) vkládání částí do středu seznamu. Výhodou je, že schopnost provádět náhodný přístup.Seznamy, na druhé straně, jsou části, které se odvíjejí v paměti, odkazují spolu. To umožňuje přímé vkládání do seznamu, avšak náhodný přístup, zatímco ne další datové struktury, není proveditelný.
2Pole může být systém, což je třeba zmínit, je to zvláštní přístup k uspořádání dat v paměťovém zařízení.Seznam je abstraktní datový typ, tj. Jakákoli datová struktura, která podporuje konkrétní skupinu operací.
3Pole je kolekce homogenních částí.Seznam je sbírka heterogenních prvků.
4Přidělené paměťové pole je statické a nepřetržité.Přidělené paměti seznamu jsou dynamické a náhodné.
5Uživatel nemusí omezovat sledování dalšího přidělení paměti.Uživatel musí omezit sledování dalšího místa, kdekoli je přidělena paměť.

Závěr - C # Array vs List

Viděli jsme srovnání využití výkonu paměti C # Array vs List v jazyce C #. Pro rychlost je obvykle vhodné mít rád pravidelné pole. Zisk výkonu je rozhodující.

Seznamy se používají mnohem častěji v C #, než jsou pole, existují však i případy, kdy se pole (nebo by měla) používat, spolu s případy, kdy je nepravděpodobné, že vaše data výrazně porostou nebo pokud se vypořádáte s poměrně velkým množstvím dat které bude muset být nuceny k indexování do obvykle.

Dovolte mi, abych vám nabídl 2 vzorky seznamů, které porušují zásady pole. V seznamu odkazů každá část ukazuje na následující část, takže jednoduše umístím náhradní díl mezi 2 stávající součásti, nebo jednu odstraním a opravím zbývající 2 (předchozí a další); vzhledem k tomu, že k částem přistupuji prostřednictvím indexu, udělám to pouze přesunutím z jedné části k zajištění a vyšetřování, takže to není skutečně indexované. Dalším příkladem je, že fronta, kdekoli jen posílí špičku a odvezu od začátku; pokud chci získat přístup k částem prostřednictvím indexu, je to proveditelné, ale zjevně nejsem špatně zacházeno se správným abstraktním druhem dat. Nezáleží na tom, zda by to implementace dala jednoduše.

Doporučený článek

Toto byl průvodce nejvyššími rozdíly mezi C # Array vs List. Zde také diskutujeme klíčové rozdíly v C # Array vs List s infografiky a srovnávací tabulkou. Můžete se také podívat na následující články -

  1. Seznam Java nebo seznam polí
  2. C # Rozhraní vs Abstraktní třídy
  3. ASP.NET vs C #
  4. Java Vector vs ArrayList

Kategorie: