Zadanie 31
Czym są kolekcje dostępne w C#, podać dwa przykłady korzystania z dostępnych kolekcji
Kolekcje to klasy służące do przechowywania i zarządzania grupami obiektów. W odróżnieniu od tablic mają zmienny rozmiar (mogą rosnąć i maleć w trakcie działania programu) oraz dostarczają gotowych metod do dodawania, usuwania i wyszukiwania elementów.
Kolekcje dzielą się na dwie grupy:
- niegeneryczne (System.Collections) - trzymają elementy jako
object. - generyczne (System.Collections.Generic) - typowane (konkretny typ
T), przez co bezpieczniejsze i wydajniejsze.
Dziś używa się prawie wyłącznie generycznych.
Wszystkie kolekcje opierają się na wspólnych interfejsach: IEnumerable (umożliwia foreach), ICollection (dodaje Count, Add, Remove), IList (dostęp po indeksie) oraz IDictionary (dostęp po kluczu).
Do najpopularniejszych kolekcji generycznych należą:
List<T>- dynamiczna lista indeksowana.Dictionary<TKey, TValue>- pary klucz-wartość, szybki dostęp po kluczu.Queue<T>- kolejka FIFO (pierwszy wszedł, pierwszy wychodzi).Stack<T>- stos LIFO (ostatni wszedł, pierwszy wychodzi).HashSet<T>- zbiór unikalnych elementów (bez duplikatów).
using System.Collections.Generic;
// List<T> - dynamiczna lista elementów tego samego typuList<string> names = new List<string>();// dodanie elementów na koniec listynames.Add("Ala");names.Add("Ola");// odczyt po indeksieConsole.WriteLine(names[0]);// usuwanie i sprawdzanie zawartościnames.Remove("Ala");bool hasOla = names.Contains("Ola");
// Dictionary<TKey, TValue> - kolekcja par klucz-wartośćDictionary<string, int> ages = new Dictionary<string, int>();// dodanie pary klucz-wartośćages["Ala"] = 20;ages.Add("Ola", 25);// odczyt wartości po kluczuConsole.WriteLine(ages["Ala"]);// bezpieczny odczyt, gdy klucz może nie istniećif (ages.TryGetValue("Ola", out int age)) Console.WriteLine(age);Skrót do zapamiętania: Kolekcje to klasy do przechowywania grup obiektów o zmiennym rozmiarze. Generyczne (System.Collections.Generic) są typowane i wydajne, niegeneryczne (System.Collections) trzymają object. Przykłady: List (lista), Dictionary (klucz-wartość), Queue (FIFO), Stack (LIFO), HashSet (unikalne).
- Zmienny rozmiar i gotowe metody (Add, Remove, Contains).
- Niegeneryczne (System.Collections, object) vs generyczne (System.Collections.Generic, typowane).
- Interfejsy: IEnumerable (foreach), ICollection, IList, IDictionary.
- Przykłady użycia:
List<T>(lista indeksowana),Dictionary<TKey,TValue>(pary klucz-wartość).