Junior
Mi az a szótár (Dictionary) C#-ban?
sobes.tech MI
Válasz az MI-től
A C#-ban a Dictionary egy olyan gyűjtemény, amely "kulcs-érték" párokat tárol, ahol minden kulcs egyedi, és gyors hozzáférést biztosít a megfelelő értékhez. Megvalósítja az IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable interfészeket. Egy hash-táblán alapul.
Fő jellemzők:
- Nem rendezett: A szótár elemeinek sorrendje nem garantált, és hozzáadás/eltávolítás során változhat.
- Teljesítmény: A hozzáadás, eltávolítás és kulcs szerinti keresés műveletek átlagos komplexitása O(1) (ideális esetben, hash ütközések nélkül), és a legrosszabb esetben O(n).
- Kulcsok egyedisége: Minden kulcsnak egyedinek kell lennie a szótárban. Egy meglévő kulcsú elem hozzáadása kivételt eredményez.
Használati példa:
// Szótár létrehozása
Dictionary<string, int> tanulók = new Dictionary<string, int>();
// Elemek hozzáadása
tanulók.Add("Ivanov", 5);
tanulók["Petrov"] = 4; // Alternatív módszer a hozzáadáshoz/frissítéshez
// Ellenőrzés, hogy létezik-e a kulcs
if (tanulók.ContainsKey("Ivanov"))
{
// Érték lekérése kulcs alapján
int jegy = tanulók["Ivanov"]; // jegy == 5
}
// Elemenkénti bejárás
foreach (KeyValuePair<string, int> tanuló in tanulók)
{
// tanuló.Key - kulcs, tanuló.Value - érték
Console.WriteLine($"{tanuló.Key}: {tanuló.Value}");
}
// Elem eltávolítása
tanulók.Remove("Petrov");
Összehasonlítás más gyűjteményekkel:
| Gyűjtemény | Fő célja | Hozzáférés indexelésen keresztül | Hozzáférés kulcs szerint | Kulcsok egyedisége | Rendezés |
|---|---|---|---|---|---|
| List<T> | Elemek sorozata | Igen | Nem | Nem | Igen |
| HashSet<T> | Egyedi elemek halmaza | Nem | Nem | Igen | Nem |
| Dictionary<TKey, TValue> | Gyors kereséshez kulcs-érték párok | Nem | Igen | Igen | Nem |