Classe System.Collections.Generic.HashSet<T>
Questo articolo fornisce osservazioni supplementari alla documentazione di riferimento per questa API.
La HashSet<T> classe fornisce operazioni di set ad alte prestazioni. Un set è una raccolta che non contiene elementi duplicati e i cui elementi non sono in un ordine particolare.
La capacità di un HashSet<T> oggetto è il numero di elementi che l'oggetto può contenere. La capacità di un HashSet<T> oggetto aumenta automaticamente man mano che gli elementi vengono aggiunti all'oggetto.
La HashSet<T> classe si basa sul modello di set matematici e fornisce operazioni set ad alte prestazioni simili all'accesso alle chiavi delle Dictionary<TKey,TValue> raccolte o Hashtable . In termini semplici, la HashSet<T> classe può essere considerata come una Dictionary<TKey,TValue> raccolta senza valori.
Una HashSet<T> raccolta non è ordinata e non può contenere elementi duplicati. Se la duplicazione dell'ordine o dell'elemento è più importante delle prestazioni per l'applicazione, è consigliabile usare la List<T> classe insieme al Sort metodo .
HashSet<T> fornisce molte operazioni di set matematico, ad esempio l'aggiunta di set (unioni) e la sottrazione di set. Nella tabella seguente sono elencate le operazioni fornite HashSet<T> e i relativi equivalenti matematici.
Operazione HashSet | Equivalente matematico |
---|---|
UnionWith | Unione o aggiunta di set |
IntersectWith | Intersezione |
ExceptWith | Imposta sottrazione |
SymmetricExceptWith | Differenza simmetrica |
Oltre alle operazioni set elencate, la HashSet<T> classe fornisce anche metodi per determinare l'uguaglianza dei set, la sovrapposizione di set e se un set è un subset o un superset di un altro set.
Solo .NET Framework: per oggetti di dimensioni molto grandi HashSet<T> , è possibile aumentare la capacità massima a 2 miliardi di elementi in un sistema a 64 bit impostando l'attributo enabled
dell'elemento <gcAllowVeryLargeObjects>
di configurazione su true
nell'ambiente di runtime.
La classe HashSet<T> implementa l'interfaccia ISet<T>.
Operazioni del set HashSet e LINQ
LINQ fornisce l'accesso Distinct
alle operazioni , Union
, Intersect
e Except
set su qualsiasi origine dati che implementa le IEnumerable interfacce o IQueryable . HashSet<T> offre una raccolta più ampia e più affidabile di operazioni set. Ad esempio, HashSet<T> fornisce confronti come IsSubsetOf e IsSupersetOf.
La differenza principale tra le operazioni e HashSet<T> le operazioni del set LINQ consiste nel fatto che le operazioni del set LINQ restituiscono sempre una nuova IEnumerable<T> raccolta, mentre i HashSet<T> metodi equivalenti modificano la raccolta corrente.
In genere, se è necessario creare un nuovo set o se l'applicazione necessita dell'accesso solo alle operazioni del set fornite, l'uso delle operazioni del set LINQ su qualsiasi IEnumerable<T> raccolta o matrice sarà sufficiente. Tuttavia, se l'applicazione richiede l'accesso a operazioni set aggiuntive o se non è consigliabile o necessario creare una nuova raccolta, usare la HashSet<T> classe .
La tabella seguente illustra le operazioni e le HashSet<T> operazioni del set LINQ equivalenti.
Operazione HashSet | Equivalente LINQ |
---|---|
UnionWith | Union |
IntersectWith | Intersect |
ExceptWith | Except |
Non specificato. | Distinct |
SymmetricExceptWith | Non specificato. |
Overlaps | Non specificato. |
IsSubsetOf | Non specificato. |
IsProperSubsetOf | Non specificato. |
IsSupersetOf | Non specificato. |
IsProperSupersetOf | Non specificato. |
SetEquals | Non specificato. |