Junior
Cos'è un dizionario in C#?
sobes.tech AI
Risposta dell'AI
Il dizionario (Dictionary) in C# è una raccolta che memorizza coppie di "chiave-valore", dove ogni chiave è unica e viene utilizzata per un accesso rapido al valore corrispondente. Implementa le interfacce IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable. È basato su una tabella hash.
Caratteristiche principali:
- Non ordinato: L'ordine degli elementi nel dizionario non è garantito e può cambiare durante l'aggiunta/rimozione.
- Prestazioni: Le operazioni di aggiunta, rimozione e ricerca per chiave hanno una complessità media di O(1) (nel caso ideale, senza collisioni di hash) e O(n) nel peggiore dei casi.
- Unicità delle chiavi: Ogni chiave deve essere unica nel dizionario. Tentare di aggiungere un elemento con una chiave esistente provocherà un'eccezione.
Esempio di utilizzo:
// Creazione di un dizionario
Dictionary<string, int> studenti = new Dictionary<string, int>();
// Aggiunta di elementi
studenti.Add("Ivanov", 5);
studenti["Petrov"] = 4; // Metodo alternativo di aggiunta/aggiornamento
// Verifica se una chiave esiste
if (studenti.ContainsKey("Ivanov"))
{
// Ottenere il valore tramite la chiave
int voto = studenti["Ivanov"]; // voto == 5
}
// Iterare sugli elementi
foreach (KeyValuePair<string, int> studente in studenti)
{
// studente.Key - chiave, studente.Value - valore
Console.WriteLine($"{studente.Key}: {studente.Value}");
}
// Rimuovere un elemento
studenti.Remove("Petrov");
Confronto con altre collezioni:
| Collezione | Scopo principale | Accesso tramite indice | Accesso tramite chiave | Unicità delle chiavi | Ordinamento |
|---|---|---|---|---|---|
| List<T> | Sequenza di elementi | Sì | No | No | Sì |
| HashSet<T> | Insieme di elementi unici | No | No | Sì | No |
| Dictionary<TKey, TValue> | Coppie chiave-valore per ricerca rapida | No | Sì | Sì | No |