Lekce 8: Pole a kolekce – Uchovávání více hodnot v C#

Lekce 8: Pole a kolekce – Uchovávání více hodnot v C#

V programování často potřebujeme pracovat s více hodnotami stejného typu, které je vhodné nějakým způsobem organizovat a zpracovávat najednou. Místo toho, abychom vytvářeli proměnnou pro každou hodnotu, můžeme použít pole nebo kolekce. Pole a kolekce nám umožňují efektivně pracovat s více hodnotami pomocí jednoho strukturovaného typu. V této lekci se zaměříme na to, jak pole a kolekce fungují v C#, jak je používat, a jaké jsou rozdíly mezi nimi.

Co je pole?

Pole je datová struktura, která uchovává pevný počet prvků stejného typu. Prvky v poli jsou umístěny v paměti za sebou a přístup k nim je možný pomocí indexů, které začínají hodnotou 0. Pole jsou v C# velmi užitečné, když potřebujeme uchovávat větší množství hodnot a mít k nim rychlý a efektivní přístup.

Deklarace pole

V C# deklarujeme pole tím, že uvedeme typ dat, které bude pole uchovávat, následovaný hranatými závorkami. Pak můžeme pole inicializovat s pevnou velikostí nebo rovnou přiřadit hodnoty.

int[] cisla = new int[5];  // Pole pro pět celých čísel

V tomto příkladu deklarujeme pole cisla, které je schopno uchovávat pět prvků typu int. Pole bylo inicializováno, ale zatím neobsahuje žádné konkrétní hodnoty. Pokud bychom chtěli pole ihned naplnit, můžeme použít následující zápis:

int[] cisla = { 1, 2, 3, 4, 5 };  // Inicializace pole s pěti hodnotami

Přístup k prvkům pole

K jednotlivým prvkům pole přistupujeme pomocí indexů. První prvek má vždy index 0, druhý prvek index 1, a tak dále.

cisla[0] = 10;  // Změna hodnoty prvního prvku na 10
int hodnota = cisla[2]; // Přiřazení hodnoty třetího prvku do proměnné

Iterace přes pole

Pokud chceme projít všechny prvky pole, můžeme použít smyčku for nebo foreach. Smyčka for nám umožňuje iterovat přes pole pomocí indexů, zatímco foreach iteruje přímo přes hodnoty pole, což je často jednodušší pro čtení.

for (int i = 0; i < cisla.Length; i++)
{
Console.WriteLine(cisla[i]); // Výpis všech hodnot z pole
}

foreach (int hodnota in cisla)
{
Console.WriteLine(hodnota); // Výpis všech hodnot z pole (foreach smyčka)
}

Jednodimenzionální a vícedimenzionální pole

V C# můžeme vytvořit nejen jednoduchá jednodimenzionální pole, ale také pole s více dimenzemi, známá jako vícedimenzionální pole. Tato pole se používají k reprezentaci složitějších struktur, jako jsou matice nebo tabulky.

Vícedimenzionální pole

Vícedimenzionální pole se deklarují s více sadami hranatých závorek. Například dvourozměrné pole může být reprezentováno jako matice řádků a sloupců.

int[,] matice = new int[3, 3];  // Dvourozměrné pole 3x3
matice[0, 0] = 1; // První prvek v první řádce a prvním sloupci

Iterace přes vícedimenzionální pole

Při práci s vícedimenzionálními poli obvykle potřebujeme použít zanořené smyčky, abychom prošli všechny řádky a sloupce.

for (int i = 0; i < 3; i++)  // Iterace přes řádky
{
for (int j = 0; j < 3; j++) // Iterace přes sloupce
{
Console.WriteLine(matice[i, j]); // Výpis hodnot
}
}

Kolekce v C#

Pole mají pevnou velikost, což může být někdy omezující. Pokud potřebujeme dynamicky měnit velikost struktury, můžeme použít kolekce. Kolekce jsou pružnější než pole, protože mohou dynamicky přidávat a odebírat prvky.

ArrayList

Jednou z nejjednodušších kolekcí v C# je ArrayList. Tato kolekce umožňuje přidávat, odebírat a měnit prvky bez nutnosti předem stanovit velikost.

using System.Collections;

ArrayList seznam = new ArrayList();
seznam.Add(10); // Přidání prvku
seznam.Add(20); // Přidání dalšího prvku
Console.WriteLine(seznam[0]); // Výstup: 10

ArrayList může uchovávat prvky různých datových typů, ale kvůli tomu ztrácíme typovou bezpečnost, což může vést k chybám. Proto se dnes doporučuje používat generické kolekce.

Generické kolekce – List<T>

Generické kolekce, jako je List<T>, umožňují vytvoření typově bezpečné kolekce. Můžeme specifikovat, jaký datový typ kolekce bude obsahovat, čímž eliminujeme chyby spojené s typovou nekompatibilitou.

List<int> seznam = new List<int>();
seznam.Add(10); // Přidání prvku
seznam.Add(20); // Přidání dalšího prvku
Console.WriteLine(seznam[0]); // Výstup: 10

V tomto případě List<int> může obsahovat pouze hodnoty typu int.

Práce s kolekcemi

Stejně jako u polí můžeme iterovat přes kolekce pomocí smyčky for nebo foreach. Kolekce navíc poskytují mnoho užitečných metod pro práci s prvky, jako je přidávání, mazání nebo hledání prvků.

List<string> jmena = new List<string> { "Petr", "Anna", "Josef" };

foreach (string jmeno in jmena)
{
Console.WriteLine(jmeno); // Výpis: Petr, Anna, Josef
}

Rozdíly mezi polem a kolekcemi

PoleKolekce
Pevná velikost – jednou deklarovaná velikost se nedá změnit.Dynamická velikost – lze přidávat a odebírat prvky.
Typově bezpečné – všechny prvky musí být stejného typu.Může být typově bezpečné (u generických kolekcí), ale nemusí (např. ArrayList).
Vyšší výkon při práci s pevně danou velikostí.Větší flexibilita při práci s proměnlivým počtem prvků.
Používá méně paměti, protože má pevnou velikost.Větší nároky na paměť při častých úpravách velikosti.

Efektivní práce s kolekcemi

Při práci s kolekcemi je důležité zvážit, jaké operace budeme nejčastěji provádět. Pro různé typy operací existují různé typy kolekcí:

  • List<T>: Ideální pro dynamicky se měnící seznamy, kde často přidáváme a odebíráme prvky.
  • Dictionary<TKey, TValue>: Umožňuje efektivně ukládat páry klíč-hodnota a rychle hledat hodnoty na základě klíčů.
  • Queue<T>: Reprezentuje frontu, kde jsou prvky přidávány na konec a odebírány z počátku (FIFO).
  • Stack<T>: Reprezentuje zásobník, kde jsou prvky přidávány i odebírány z vrcholu (LIFO).

Každý typ kolekce má své výhody a je vhodný pro různé scénáře.

Závěr

Pole a kolekce jsou nezbytnými nástroji pro uchovávání a správu více hodnot v C#. Pole jsou skvělá pro pevně dané množství hodnot, zatímco kolekce poskytují větší flexibilitu pro práci s dynamickými daty. Použití správného typu datové struktury je klíčové pro efektivitu a správnou funkci aplikace. V této lekci jsme se naučili, jak pracovat s poli, vícedimenzionálními poli a různými typy kolekcí v C#.

Jirka

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners. View more
Cookies settings
Accept
Privacy & Cookie policy
Privacy & Cookies policy
Cookie name Active

Kdo jsme

Naše webová adresa je: https://www.jefta.cz.

Komentáře

Když návštěvníci zanechají na webu komentáře, shromažďujeme údaje zobrazené ve formuláři pro komentáře a také IP adresu návštěvníka a řetězec uživatelského agenta prohlížeče, abychom pomohli odhalit spam.

Anonymizovaný řetězec vytvořený z vaší e-mailové adresy (také nazývaný hash) může být poskytnut službě Gravatar, abyste zjistili, zda ji používáte. Zásady ochrany osobních údajů služby Gravatar jsou k dispozici zde: https://automattic.com/privacy/. Po schválení vašeho komentáře bude váš profilový obrázek viditelný pro veřejnost v kontextu vašeho komentáře.

Média

Pokud na web nahráváte obrázky, měli byste se vyhnout nahrávání obrázků s vloženými údaji o poloze (EXIF GPS). Návštěvníci webu si mohou stáhnout a extrahovat jakákoli data o poloze z obrázků na webu.

Soubory cookie

Pokud na našem webu zanecháte komentář, můžete se přihlásit k ukládání svého jména, e-mailové adresy a webu do souborů cookie. Jsou pro vaše pohodlí, abyste nemuseli znovu vyplňovat své údaje, když zanecháte další komentář. Tyto cookies vydrží jeden rok.

Pokud navštívíte naši přihlašovací stránku, nastavíme dočasný soubor cookie, abychom zjistili, zda váš prohlížeč přijímá soubory cookie. Tento soubor cookie neobsahuje žádné osobní údaje a po zavření prohlížeče je vyřazen.

Když se přihlásíte, nastavíme také několik souborů cookie pro uložení vašich přihlašovacích údajů a vašich voleb zobrazení obrazovky. Přihlašovací soubory cookie vydrží dva dny a soubory cookie možností obrazovky vydrží rok. Pokud zvolíte "Zapamatovat si mě", vaše přihlášení bude trvat dva týdny. Pokud se odhlásíte ze svého účtu, přihlašovací soubory cookie budou odstraněny.

Pokud upravíte nebo publikujete článek, uloží se do vašeho prohlížeče další cookie. Tento soubor cookie neobsahuje žádné osobní údaje a pouze označuje ID příspěvku článku, který jste právě upravili. Jeho platnost vyprší po 1 dni.

Vložený obsah z jiných webových stránek

Články na tomto webu mohou obsahovat vložený obsah (např. videa, obrázky, články atd.). Vložený obsah z jiných webových stránek se chová úplně stejně, jako kdyby návštěvník navštívil jinou webovou stránku.

Tyto webové stránky mohou shromažďovat údaje o vás, používat soubory cookie, vkládat další sledování třetích stran a monitorovat vaši interakci s tímto vloženým obsahem, včetně sledování vaší interakce s vloženým obsahem, pokud máte účet a jste na dané webové stránce přihlášeni.

S kým sdílíme vaše údaje

Pokud požádáte o resetování hesla, vaše IP adresa bude zahrnuta v e-mailu pro resetování.

Jak dlouho vaše údaje uchováváme

Pokud zanecháte komentář, bude komentář a jeho metadata uchována po neomezenou dobu. Je to proto, abychom mohli rozpoznat a schválit jakékoli následné komentáře automaticky, místo abychom je drželi ve frontě na moderování.

Pro uživatele, kteří se zaregistrují na našich webových stránkách (pokud existují), ukládáme také osobní údaje, které poskytují, v jejich uživatelském profilu. Všichni uživatelé mohou kdykoli zobrazit, upravit nebo smazat své osobní údaje (kromě toho, že nemohou změnit své uživatelské jméno). Správci webových stránek mohou tyto informace také zobrazit a upravovat.

Jaká práva máte nad svými údaji

Pokud máte účet na této stránce nebo jste zanechali komentáře, můžete požádat o zaslání exportovaného souboru osobních údajů, které o vás uchováváme, včetně všech údajů, které jste nám poskytli. Můžete také požádat, abychom vymazali veškeré osobní údaje, které o vás uchováváme. To nezahrnuje žádné údaje, které jsme povinni uchovávat pro administrativní, právní nebo bezpečnostní účely.

Kam se posílají vaše data

Komentáře návštěvníků mohou být kontrolovány prostřednictvím služby automatické detekce spamu.

Save settings
Cookies settings