Dictionary w C#: Twój prywatny Google dla obiektów

Dictionary w C#: Twój prywatny Google dla obiektów

Wyobraź sobie świat, w którym nie musisz wertować setek kartek, żeby znaleźć numer telefonu przyjaciela.
Wystarczy otworzyć kontakty i wpisać imię – błyskawicznie masz wynik. Tak właśnie działa Dictionary w C# – to Twoje osobiste Google w aplikacji.
Dziś pokażę Ci, dlaczego to jedna z najważniejszych kolekcji w .NET, jak działa pod spodem i jak jej używać, żeby Twoje programy były szybkie i eleganckie.

Co to jest Dictionary<TKey, TValue>?

Dictionary<TKey, TValue> w C# to kolekcja, która przechowuje dane w parach: klucz → wartość.
Klucz musi być unikalny (nie może być null), a wartość to obiekt, który ten klucz reprezentuje.

Przykład z życia:

  • Klucz: numer PESEL
  • Wartość: obiekt klasy Customer

Dzięki temu możesz w ułamku sekundy znaleźć klienta, nie przeszukując całej listy jak detektyw w starym archiwum.


Tworzenie słownika w C#

Najpierw definiujemy typ klucza i wartość:

var customers = new Dictionary<int, Customer>()

Możemy od razu dodać dane podczas inicjalizacji:

var customers = new Dictionary<int, Customer>
{
    { customer1.Id, customer1 },
    { customer2.Id, customer2 }
};

I teraz – magia. Szukasz klienta o ID = 34? Wystarczy:

var customer = customers[34];

Porównanie:

  • Lista (List<T>) → musisz szukać elementu „po kolei” (jak przewijanie kontaktów w staryj Nokii).
  • Dictionary → błyskawiczne wyszukiwanie (jak wpisanie w Google).

Najważniejsze operacje na Dictionary

Dodawanie elementów

customers.Add(3, new Customer { Id = 3, Name = "Jan Nowak" });

Usuwanie

customers.Remove(1);  // usuwa klienta o ID = 1
customers.Clear();    // usuwa wszystkich

Sprawdzanie zawartości

bool hasKey = customers.ContainsKey(5);
bool hasValue = customers.ContainsValue(customer1);

Iterowanie po kluczach i wartościach

foreach (var key in customers.Keys)
    Console.WriteLine(key);

foreach (var value in customers.Values)
    Console.WriteLine(value.Name);

foreach (var pair in customers)
    Console.WriteLine($"{pair.Key} → {pair.Value.Name}");

➡️ Mini-podsumowanie: Dictionary to nie tylko szybkie wyszukiwanie – ale też proste metody, które czynią życie programisty przyjemniejszym.


Dlaczego Dictionary jest takie szybkie?

Tu dochodzimy do sedna. Dictionary wewnętrznie korzysta z haszowania.

  • Każdy klucz ma swoją metodę GetHashCode().
  • Wynik tej metody (hash) przekształcany jest w indeks tablicy.
  • Dzięki temu C# wie, gdzie leży wartość, bez przeszukiwania wszystkiego.

To tak, jakbyś miał bibliotekę, w której każda książka ma GPS i sama do Ciebie podchodzi, gdy o nią poprosisz.

Przykład działania:

  1. Dodajesz klienta z kluczem 34.
  2. Słownik liczy hash → zapisuje klienta pod odpowiednim indeksem.
  3. Szukasz klienta o 34słownik liczy hash → bach! – od razu wskakuje właściwy obiekt.

➡️ Mini-podsumowanie: To właśnie haszowanie daje Dictionary jego supermoc. Wyszukiwanie jest w czasie zbliżonym do stałego (O(1)).


Kiedy używać Dictionary?

  • Gdy potrzebujesz szybkiego dostępu do danych po unikalnym kluczu.
  • Gdy Twoja aplikacja ma duże zbiory danych (np. setki tysięcy rekordów).
  • Gdy chcesz napisać czytelny i wydajny kod, który zamiast liniowych pętli używa eleganckiego wyszukiwania.

Nie używaj Dictionary, jeśli:

  • Klucze mogą się powtarzać (lepiej wtedy np. Lookup albo IGrouping).
  • Potrzebujesz sortowania po kluczach (tu lepszy będzie SortedDictionary).

Podsumowanie

Dictionary w C# to must-know dla każdego programisty .NET. Dzięki niemu:

  • Twoje aplikacje działają szybciej,
  • kod staje się bardziej elegancki,
  • a Ty masz w rękach narzędzie, które przypomina własny indeks Google dla obiektów.

Pamiętaj: świat programowania to nie tylko „zrobić, żeby działało”. To także sztuka wyboru najlepszych narzędzi. Dictionary jest jednym z nich.


Co dalej?

👉 Zostaw komentarz – napisz, jak używasz słowników w swoich projektach.
👉 Subskrybuj kanał na YT, żeby nie przegapić kolejnych filmów z C#.
👉 Sprawdź mój kurs online – tam wchodzimy jeszcze głębiej w praktyczne zastosowania kolekcji.

Jako programista C# musisz wiedzieć, że słowniki są kolekcjami opartymi na haszowaniu i dlatego wyszukiwania są bardzo szybkie. W przeciwieństwie do list, wyszukiwanie obiektu w słowniku nie wymaga skanowania każdego obiektu i bez względu na to, jak duży jest słownik, pozostanie on niezwykle szybki.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *