HashSet<T> Costruttori
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Inizializza una nuova istanza della classe HashSet<T>.
Overload
HashSet<T>() |
Inizializza una nuova istanza vuota della classe HashSet<T> e usa l'operatore di confronto per l'uguaglianza per il tipo di insieme. |
HashSet<T>(IEnumerable<T>) |
Inizializza una nuova istanza della classe HashSet<T> che usa l'operatore di confronto per l'uguaglianza per il tipo di insieme, contiene gli elementi copiati dalla raccolta specificata e presenta una capacità sufficiente a contenere il numero di elementi copiati. |
HashSet<T>(IEqualityComparer<T>) |
Inizializza una nuova istanza vuota della classe HashSet<T> e usa l'operatore di confronto per l'uguaglianza specificato per il tipo di insieme. |
HashSet<T>(Int32) |
Inizializza una nuova istanza della classe HashSet<T>, che è vuota ma include spazio riservato per |
HashSet<T>(IEnumerable<T>, IEqualityComparer<T>) |
Inizializza una nuova istanza della classe HashSet<T> che usa l'operatore di confronto per l'uguaglianza specificato per il tipo di insieme, contiene gli elementi copiati dalla raccolta specificata e ha una capacità sufficiente a contenere il numero di elementi copiati. |
HashSet<T>(Int32, IEqualityComparer<T>) |
Inizializza una nuova istanza della classe HashSet<T> che usa l'operatore di confronto per l'uguaglianza specificato per il tipo di set e ha una capacità sufficiente a contenere gli elementi |
HashSet<T>(SerializationInfo, StreamingContext) |
Obsoleti.
Inizializza una nuova istanza della classe HashSet<T> con dati serializzati. |
HashSet<T>()
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
Inizializza una nuova istanza vuota della classe HashSet<T> e usa l'operatore di confronto per l'uguaglianza per il tipo di insieme.
public:
HashSet();
public HashSet ();
Public Sub New ()
Esempio
Nell'esempio seguente viene illustrato come creare e popolare due HashSet<T> oggetti. Questo esempio fa parte di un esempio più grande fornito per il UnionWith metodo.
HashSet<int> evenNumbers = new HashSet<int>();
HashSet<int> oddNumbers = new HashSet<int>();
for (int i = 0; i < 5; i++)
{
// Populate numbers with just even numbers.
evenNumbers.Add(i * 2);
// Populate oddNumbers with just odd numbers.
oddNumbers.Add((i * 2) + 1);
}
Dim evenNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()
Dim oddNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()
For i As Integer = 0 To 4
' Populate evenNumbers with only even numbers.
evenNumbers.Add(i * 2)
' Populate oddNumbers with only odd numbers.
oddNumbers.Add((i * 2) + 1)
Next i
Commenti
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 quando gli elementi vengono aggiunti all'oggetto.
Questo costruttore è un'operazione O(1).
Si applica a
HashSet<T>(IEnumerable<T>)
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
Inizializza una nuova istanza della classe HashSet<T> che usa l'operatore di confronto per l'uguaglianza per il tipo di insieme, contiene gli elementi copiati dalla raccolta specificata e presenta una capacità sufficiente a contenere il numero di elementi copiati.
public:
HashSet(System::Collections::Generic::IEnumerable<T> ^ collection);
public HashSet (System.Collections.Generic.IEnumerable<T> collection);
new System.Collections.Generic.HashSet<'T> : seq<'T> -> System.Collections.Generic.HashSet<'T>
Public Sub New (collection As IEnumerable(Of T))
Parametri
- collection
- IEnumerable<T>
Raccolta i cui elementi vengono copiati nel nuovo insieme.
Eccezioni
collection
è null
.
Esempio
Nell'esempio seguente viene illustrato come creare una HashSet<T> raccolta da un set esistente. In questo esempio vengono creati due set con valori interi pari e dispari, rispettivamente. Un terzo HashSet<T> oggetto viene quindi creato dal set intero uniforme.
HashSet<int> evenNumbers = new HashSet<int>();
HashSet<int> oddNumbers = new HashSet<int>();
for (int i = 0; i < 5; i++)
{
// Populate numbers with just even numbers.
evenNumbers.Add(i * 2);
// Populate oddNumbers with just odd numbers.
oddNumbers.Add((i * 2) + 1);
}
Console.Write("evenNumbers contains {0} elements: ", evenNumbers.Count);
DisplaySet(evenNumbers);
Console.Write("oddNumbers contains {0} elements: ", oddNumbers.Count);
DisplaySet(oddNumbers);
// Create a new HashSet populated with even numbers.
HashSet<int> numbers = new HashSet<int>(evenNumbers);
Console.WriteLine("numbers UnionWith oddNumbers...");
numbers.UnionWith(oddNumbers);
Console.Write("numbers contains {0} elements: ", numbers.Count);
DisplaySet(numbers);
void DisplaySet(HashSet<int> collection)
{
Console.Write("{");
foreach (int i in collection)
{
Console.Write(" {0}", i);
}
Console.WriteLine(" }");
}
/* This example produces output similar to the following:
* evenNumbers contains 5 elements: { 0 2 4 6 8 }
* oddNumbers contains 5 elements: { 1 3 5 7 9 }
* numbers UnionWith oddNumbers...
* numbers contains 10 elements: { 0 2 4 6 8 1 3 5 7 9 }
*/
Shared Sub Main()
Dim evenNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()
Dim oddNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()
For i As Integer = 0 To 4
' Populate evenNumbers with only even numbers.
evenNumbers.Add(i * 2)
' Populate oddNumbers with only odd numbers.
oddNumbers.Add((i * 2) + 1)
Next i
Console.Write("evenNumbers contains {0} elements: ", evenNumbers.Count)
DisplaySet(evenNumbers)
Console.Write("oddNumbers contains {0} elements: ", oddNumbers.Count)
DisplaySet(oddNumbers)
' Create a new HashSet populated with even numbers.
Dim numbers As HashSet(Of Integer) = New HashSet(Of Integer)(evenNumbers)
Console.WriteLine("numbers UnionWith oddNumbers...")
numbers.UnionWith(oddNumbers)
Console.Write("numbers contains {0} elements: ", numbers.Count)
DisplaySet(numbers)
End Sub
Commenti
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 quando gli elementi vengono aggiunti all'oggetto.
Se collection
contiene duplicati, il set conterrà uno di ogni elemento univoco. Nessuna eccezione verrà generata. Pertanto, le dimensioni del set risultante non sono identiche alle dimensioni di collection
.
Questo costruttore è un'operazione O(n
), dove n
è il numero di elementi nel collection
parametro.
Si applica a
HashSet<T>(IEqualityComparer<T>)
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
Inizializza una nuova istanza vuota della classe HashSet<T> e usa l'operatore di confronto per l'uguaglianza specificato per il tipo di insieme.
public:
HashSet(System::Collections::Generic::IEqualityComparer<T> ^ comparer);
public HashSet (System.Collections.Generic.IEqualityComparer<T> comparer);
public HashSet (System.Collections.Generic.IEqualityComparer<T>? comparer);
new System.Collections.Generic.HashSet<'T> : System.Collections.Generic.IEqualityComparer<'T> -> System.Collections.Generic.HashSet<'T>
Public Sub New (comparer As IEqualityComparer(Of T))
Parametri
- comparer
- IEqualityComparer<T>
Implementazione di IEqualityComparer<T> da usare per confrontare i valori nel set oppure null
per usare l'implementazione di EqualityComparer<T> predefinita per il tipo di set.
Commenti
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 quando gli elementi vengono aggiunti all'oggetto.
Questo costruttore è un'operazione O(1).
Si applica a
HashSet<T>(Int32)
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
Inizializza una nuova istanza della classe HashSet<T>, che è vuota ma include spazio riservato per capacity
e usa l'operatore di confronto per l'uguaglianza per il tipo di set.
public:
HashSet(int capacity);
public HashSet (int capacity);
new System.Collections.Generic.HashSet<'T> : int -> System.Collections.Generic.HashSet<'T>
Public Sub New (capacity As Integer)
Parametri
- capacity
- Int32
Dimensione iniziale dell'oggetto HashSet<T>.
Commenti
Poiché i ridimensionamenti sono relativamente costosi (richiedono il ripristino), questo tentativo di ridurre al minimo la necessità di ridimensionare impostando la capacità iniziale in base al valore di capacity
.
Si applica a
HashSet<T>(IEnumerable<T>, IEqualityComparer<T>)
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
Inizializza una nuova istanza della classe HashSet<T> che usa l'operatore di confronto per l'uguaglianza specificato per il tipo di insieme, contiene gli elementi copiati dalla raccolta specificata e ha una capacità sufficiente a contenere il numero di elementi copiati.
public:
HashSet(System::Collections::Generic::IEnumerable<T> ^ collection, System::Collections::Generic::IEqualityComparer<T> ^ comparer);
public HashSet (System.Collections.Generic.IEnumerable<T> collection, System.Collections.Generic.IEqualityComparer<T> comparer);
public HashSet (System.Collections.Generic.IEnumerable<T> collection, System.Collections.Generic.IEqualityComparer<T>? comparer);
new System.Collections.Generic.HashSet<'T> : seq<'T> * System.Collections.Generic.IEqualityComparer<'T> -> System.Collections.Generic.HashSet<'T>
Public Sub New (collection As IEnumerable(Of T), comparer As IEqualityComparer(Of T))
Parametri
- collection
- IEnumerable<T>
Raccolta i cui elementi vengono copiati nel nuovo insieme.
- comparer
- IEqualityComparer<T>
Implementazione di IEqualityComparer<T> da usare per confrontare i valori nel set oppure null
per usare l'implementazione di EqualityComparer<T> predefinita per il tipo di set.
Eccezioni
collection
è null
.
Esempio
Nell'esempio seguente viene usato un oggetto fornito IEqualityComparer<T> per consentire confronti senza distinzione tra maiuscole e minuscole sugli elementi di una HashSet<T> raccolta di tipi di veicoli.
#using <System.Core.dll>
using namespace System;
using namespace System::Collections::Generic;
ref class Program
{
public:
static void Main()
{
HashSet<String^> ^allVehicles = gcnew HashSet<String^>(StringComparer::OrdinalIgnoreCase);
List<String^>^ someVehicles = gcnew List<String^>();
someVehicles->Add("Planes");
someVehicles->Add("Trains");
someVehicles->Add("Automobiles");
// Add in the vehicles contained in the someVehicles list.
allVehicles->UnionWith(someVehicles);
Console::WriteLine("The current HashSet contains:\n");
for each (String^ vehicle in allVehicles)
{
Console::WriteLine(vehicle);
}
allVehicles->Add("Ships");
allVehicles->Add("Motorcycles");
allVehicles->Add("Rockets");
allVehicles->Add("Helicopters");
allVehicles->Add("Submarines");
Console::WriteLine("\nThe updated HashSet contains:\n");
for each (String^ vehicle in allVehicles)
{
Console::WriteLine(vehicle);
}
// Verify that the 'All Vehicles' set contains at least the vehicles in
// the 'Some Vehicles' list.
if (allVehicles->IsSupersetOf(someVehicles))
{
Console::Write("\nThe 'All' vehicles set contains everything in ");
Console::WriteLine("'Some' vechicles list.");
}
// Check for Rockets. Here the OrdinalIgnoreCase comparer will compare
// true for the mixed-case vehicle type.
if (allVehicles->Contains("roCKeTs"))
{
Console::WriteLine("\nThe 'All' vehicles set contains 'roCKeTs'");
}
allVehicles->ExceptWith(someVehicles);
Console::WriteLine("\nThe excepted HashSet contains:\n");
for each (String^ vehicle in allVehicles)
{
Console::WriteLine(vehicle);
}
// Remove all the vehicles that are not 'super cool'.
allVehicles->RemoveWhere(gcnew Predicate<String^>(&isNotSuperCool));
Console::WriteLine("\nThe super cool vehicles are:\n");
for each (String^ vehicle in allVehicles)
{
Console::WriteLine(vehicle);
}
}
private:
// Predicate to determine vehicle 'coolness'.
static bool isNotSuperCool(String^ vehicle)
{
bool superCool = (vehicle == "Helicopters") || (vehicle == "Motorcycles");
return !superCool;
}
};
int main()
{
Program::Main();
}
// The program writes the following output to the console::
//
// The current HashSet contains:
//
// Planes
// Trains
// Automobiles
//
// The updated HashSet contains:
//
// Planes
// Trains
// Automobiles
// Ships
// Motorcycles
// Rockets
// Helicopters
// Submarines
//
// The 'All' vehicles set contains everything in 'Some' vechicles list.
//
// The 'All' vehicles set contains 'roCKeTs'
//
// The excepted HashSet contains:
//
// Ships
// Motorcycles
// Rockets
// Helicopters
// Submarines
//
// The super cool vehicles are:
//
// Motorcycles
// Helicopters
HashSet<string> allVehicles = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
List<string> someVehicles = new List<string>();
someVehicles.Add("Planes");
someVehicles.Add("Trains");
someVehicles.Add("Automobiles");
// Add in the vehicles contained in the someVehicles list.
allVehicles.UnionWith(someVehicles);
Console.WriteLine("The current HashSet contains:\n");
foreach (string vehicle in allVehicles)
{
Console.WriteLine(vehicle);
}
allVehicles.Add("Ships");
allVehicles.Add("Motorcycles");
allVehicles.Add("Rockets");
allVehicles.Add("Helicopters");
allVehicles.Add("Submarines");
Console.WriteLine("\nThe updated HashSet contains:\n");
foreach (string vehicle in allVehicles)
{
Console.WriteLine(vehicle);
}
// Verify that the 'All Vehicles' set contains at least the vehicles in
// the 'Some Vehicles' list.
if (allVehicles.IsSupersetOf(someVehicles))
{
Console.Write("\nThe 'All' vehicles set contains everything in ");
Console.WriteLine("'Some' vechicles list.");
}
// Check for Rockets. Here the OrdinalIgnoreCase comparer will compare
// true for the mixed-case vehicle type.
if (allVehicles.Contains("roCKeTs"))
{
Console.WriteLine("\nThe 'All' vehicles set contains 'roCKeTs'");
}
allVehicles.ExceptWith(someVehicles);
Console.WriteLine("\nThe excepted HashSet contains:\n");
foreach (string vehicle in allVehicles)
{
Console.WriteLine(vehicle);
}
// Remove all the vehicles that are not 'super cool'.
allVehicles.RemoveWhere(isNotSuperCool);
Console.WriteLine("\nThe super cool vehicles are:\n");
foreach (string vehicle in allVehicles)
{
Console.WriteLine(vehicle);
}
// Predicate to determine vehicle 'coolness'.
bool isNotSuperCool(string vehicle)
{
bool superCool = (vehicle == "Helicopters") || (vehicle == "Motorcycles");
return !superCool;
}
// The program writes the following output to the console.
//
// The current HashSet contains:
//
// Planes
// Trains
// Automobiles
//
// The updated HashSet contains:
//
// Planes
// Trains
// Automobiles
// Ships
// Motorcycles
// Rockets
// Helicopters
// Submarines
//
// The 'All' vehicles set contains everything in 'Some' vechicles list.
//
// The 'All' vehicles set contains 'roCKeTs'
//
// The excepted HashSet contains:
//
// Ships
// Motorcycles
// Rockets
// Helicopters
// Submarines
//
// The super cool vehicles are:
//
// Motorcycles
// Helicopters
Imports System.Collections.Generic
Class Program
Public Shared Sub Main()
Dim allVehicles As New HashSet(Of String)(StringComparer.OrdinalIgnoreCase)
Dim someVehicles As New List(Of String)()
someVehicles.Add("Planes")
someVehicles.Add("Trains")
someVehicles.Add("Automobiles")
' Add in the vehicles contained in the someVehicles list.
allVehicles.UnionWith(someVehicles)
Console.WriteLine("The current HashSet contains:" + Environment.NewLine)
For Each vehicle As String In allVehicles
Console.WriteLine(vehicle)
Next vehicle
allVehicles.Add("Ships")
allVehicles.Add("Motorcycles")
allVehicles.Add("Rockets")
allVehicles.Add("Helicopters")
allVehicles.Add("Submarines")
Console.WriteLine(Environment.NewLine + "The updated HashSet contains:" + Environment.NewLine)
For Each vehicle As String In allVehicles
Console.WriteLine(vehicle)
Next vehicle
' Verify that the 'All Vehicles' set contains at least the vehicles in
' the 'Some Vehicles' list.
If allVehicles.IsSupersetOf(someVehicles) Then
Console.Write(Environment.NewLine + "The 'All' vehicles set contains everything in ")
Console.WriteLine("'Some' vechicles list.")
End If
' Check for Rockets. Here the OrdinalIgnoreCase comparer will compare
' True for the mixed-case vehicle type.
If allVehicles.Contains("roCKeTs") Then
Console.WriteLine(Environment.NewLine + "The 'All' vehicles set contains 'roCKeTs'")
End If
allVehicles.ExceptWith(someVehicles)
Console.WriteLine(Environment.NewLine + "The excepted HashSet contains:" + Environment.NewLine)
For Each vehicle As String In allVehicles
Console.WriteLine(vehicle)
Next vehicle
' Remove all the vehicles that are not 'super cool'.
allVehicles.RemoveWhere(AddressOf isNotSuperCool)
Console.WriteLine(Environment.NewLine + "The super cool vehicles are:" + Environment.NewLine)
For Each vehicle As String In allVehicles
Console.WriteLine(vehicle)
Next vehicle
End Sub
' Predicate to determine vehicle 'coolness'.
Private Shared Function isNotSuperCool(vehicle As String) As Boolean
Dim notSuperCool As Boolean = _
(vehicle <> "Helicopters") And (vehicle <> "Motorcycles")
Return notSuperCool
End Function
End Class
'
' The program writes the following output to the console.
'
' The current HashSet contains:
'
' Planes
' Trains
' Automobiles
'
' The updated HashSet contains:
'
' Planes
' Trains
' Automobiles
' Ships
' Motorcycles
' Rockets
' Helicopters
' Submarines
'
' The 'All' vehicles set contains everything in 'Some' vechicles list.
'
' The 'All' vehicles set contains 'roCKeTs'
'
' The excepted HashSet contains:
'
' Ships
' Motorcycles
' Rockets
' Helicopters
' Submarines
'
' The super cool vehicles are:
'
' Motorcycles
' Helicopters
Commenti
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 quando gli elementi vengono aggiunti all'oggetto.
Se collection
contiene duplicati, il set conterrà uno di ogni elemento univoco. Nessuna eccezione verrà generata. Pertanto, le dimensioni del set risultante non sono identiche alle dimensioni di collection
.
Questo costruttore è un'operazione O(n
), dove n
è il numero di elementi nel collection
parametro.
Si applica a
HashSet<T>(Int32, IEqualityComparer<T>)
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
Inizializza una nuova istanza della classe HashSet<T> che usa l'operatore di confronto per l'uguaglianza specificato per il tipo di set e ha una capacità sufficiente a contenere gli elementi capacity
.
public:
HashSet(int capacity, System::Collections::Generic::IEqualityComparer<T> ^ comparer);
public HashSet (int capacity, System.Collections.Generic.IEqualityComparer<T>? comparer);
public HashSet (int capacity, System.Collections.Generic.IEqualityComparer<T> comparer);
new System.Collections.Generic.HashSet<'T> : int * System.Collections.Generic.IEqualityComparer<'T> -> System.Collections.Generic.HashSet<'T>
Public Sub New (capacity As Integer, comparer As IEqualityComparer(Of T))
Parametri
- capacity
- Int32
Dimensione iniziale dell'oggetto HashSet<T>.
- comparer
- IEqualityComparer<T>
Implementazione di IEqualityComparer<T> da usare per confrontare i valori nel set oppure null (Nothing in Visual Basic) per usare l'implementazione predefinita di IEqualityComparer<T> per il tipo di set.
Commenti
Poiché i ridimensionamenti sono relativamente costosi (richiedono il ripristino), questo tentativo di ridurre al minimo la necessità di ridimensionare impostando la capacità iniziale in base al valore di capacity
.
Si applica a
HashSet<T>(SerializationInfo, StreamingContext)
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
Attenzione
This API supports obsolete formatter-based serialization. It should not be called or extended by application code.
Inizializza una nuova istanza della classe HashSet<T> con dati serializzati.
protected:
HashSet(System::Runtime::Serialization::SerializationInfo ^ info, System::Runtime::Serialization::StreamingContext context);
protected HashSet (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
[System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
protected HashSet (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
new System.Collections.Generic.HashSet<'T> : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Collections.Generic.HashSet<'T>
[<System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
new System.Collections.Generic.HashSet<'T> : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Collections.Generic.HashSet<'T>
Protected Sub New (info As SerializationInfo, context As StreamingContext)
Parametri
- info
- SerializationInfo
Oggetto SerializationInfo contenente le informazioni necessarie per serializzare l'oggetto HashSet<T>.
- context
- StreamingContext
Struttura StreamingContext che contiene l'origine e la destinazione del flusso serializzato associato all'oggetto HashSet<T>.
- Attributi
Commenti
Questo costruttore viene chiamato durante la deserializzazione per ricostituire un oggetto trasmesso su un flusso. Per altre informazioni, vedere Serializzazione XML e SOAP.
Si applica a
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per