Junior
Cos'è HashSet in C#?
sobes.tech AI
Risposta dell'AI
HashSet<T> è una collezione non ordinata di elementi unici. Si basa su una tabella hash e garantisce operazioni rapide di aggiunta, rimozione e verifica della presenza di elementi (in media in tempo costante, O(1)).
Caratteristiche principali di HashSet<T>:
- Unicità: Non può contenere duplicati. Tentando di aggiungere un elemento esistente, l'operazione viene ignorata.
- Non ordinato: Gli elementi non sono memorizzati in un ordine specifico. L'ordine di iterazione può differire dall'ordine di inserimento.
- Prestazioni: Grazie all'uso dell'hash, le operazioni di ricerca, aggiunta e rimozione hanno in media complessità O(1). Nel peggiore dei casi (con cattiva funzione hash o collisioni), le prestazioni possono diminuire.
- Operazioni multiple: Supporta varie operazioni come unione (
UnionWith), intersezione (IntersectWith), differenza (ExceptWith), verifica di sottoinsieme o sovrainsieme (IsSubsetOf,IsSupersetOf).
Esempio di utilizzo:
// Creazione di HashSet
HashSet<string> fruits = new HashSet<string>();
// Aggiunta di elementi
fruits.Add("mela");
fruits.Add("banana");
fruits.Add("arancia");
fruits.Add("mela"); // Verrà ignorato, poiché "mela" è già presente
// Verifica presenza di un elemento
bool hasBanana = fruits.Contains("banana"); // true
bool hasGrape = fruits.Contains("uva"); // false
// Rimozione di un elemento
fruits.Remove("arancia");
// Iterare sugli elementi
foreach (string fruit in fruits)
{
// Output: mela, banana (ordine può variare)
Console.WriteLine(fruit);
}
// Dimensione della collezione
int count = fruits.Count; // 2
HashSet<T> implementa le interfacce ICollection<T>, IEnumerable<T> e ISet<T>, consentendo il suo utilizzo in vari scenari di collezioni e l'esecuzione di operazioni specifiche di insiemi.