HashSet<T> Konstruktory
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Inicializuje novou instanci HashSet<T> třídy .
Přetížení
HashSet<T>() |
Inicializuje novou instanci HashSet<T> třídy, která je prázdná a použije výchozí porovnávací nástroj rovnosti pro typ sady. |
HashSet<T>(IEnumerable<T>) |
Inicializuje novou instanci HashSet<T> třídy, která používá výchozí porovnávač rovnosti pro typ sady, obsahuje prvky zkopírované ze zadané kolekce a má dostatečnou kapacitu pro počet zkopírovaných prvků. |
HashSet<T>(IEqualityComparer<T>) |
Inicializuje novou instanci HashSet<T> třídy, která je prázdná a použije zadaný porovnávač rovnosti pro typ sady. |
HashSet<T>(Int32) |
Inicializuje novou instanci HashSet<T> třídy, která je prázdná, ale má vyhrazené místo pro |
HashSet<T>(IEnumerable<T>, IEqualityComparer<T>) |
Inicializuje novou instanci HashSet<T> třídy, která používá zadaný porovnávač rovnosti pro typ sady, obsahuje prvky zkopírované ze zadané kolekce a má dostatečnou kapacitu pro přizpůsobení počtu zkopírovaných prvků. |
HashSet<T>(Int32, IEqualityComparer<T>) |
Inicializuje novou instanci HashSet<T> třídy, která používá zadaný porovnávač rovnosti pro typ sady a má dostatečnou kapacitu pro pojmout |
HashSet<T>(SerializationInfo, StreamingContext) |
Zastaralé.
Inicializuje novou instanci třídy HashSet<T> se serializovanými daty. |
HashSet<T>()
- Zdroj:
- HashSet.cs
- Zdroj:
- HashSet.cs
- Zdroj:
- HashSet.cs
Inicializuje novou instanci HashSet<T> třídy, která je prázdná a použije výchozí porovnávací nástroj rovnosti pro typ sady.
public:
HashSet();
public HashSet ();
Public Sub New ()
Příklady
Následující příklad ukazuje, jak vytvořit a naplnit dva HashSet<T> objekty. Tento příklad je součástí většího příkladu pro metodu UnionWith .
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
Poznámky
Kapacita objektu HashSet<T> je počet prvků, které objekt může obsahovat. Kapacita HashSet<T> objektu se automaticky zvyšuje při přidání prvků do objektu.
Tento konstruktor je operace O(1).
Platí pro
HashSet<T>(IEnumerable<T>)
- Zdroj:
- HashSet.cs
- Zdroj:
- HashSet.cs
- Zdroj:
- HashSet.cs
Inicializuje novou instanci HashSet<T> třídy, která používá výchozí porovnávač rovnosti pro typ sady, obsahuje prvky zkopírované ze zadané kolekce a má dostatečnou kapacitu pro počet zkopírovaných prvků.
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))
Parametry
- collection
- IEnumerable<T>
Kolekce, jejíž prvky jsou zkopírovány do nové sady.
Výjimky
collection
je null
.
Příklady
Následující příklad ukazuje, jak vytvořit kolekci HashSet<T> z existující sady. V tomto příkladu se vytvoří dvě sady se sudými a lichými celými čísly. Třetí HashSet<T> objekt je pak vytvořen ze sudé celočíselné sady.
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
Poznámky
Kapacita objektu HashSet<T> je počet prvků, které objekt může obsahovat. Kapacita HashSet<T> objektu se automaticky zvyšuje při přidání prvků do objektu.
Pokud collection
obsahuje duplicity, bude sada obsahovat jeden z každého jedinečného prvku. Nebude vyvolána žádná výjimka. Velikost výsledné sady proto není shodná s velikostí souboru collection
.
Tento konstruktor je operace O(n
), kde n
je počet prvků v parametru collection
.
Platí pro
HashSet<T>(IEqualityComparer<T>)
- Zdroj:
- HashSet.cs
- Zdroj:
- HashSet.cs
- Zdroj:
- HashSet.cs
Inicializuje novou instanci HashSet<T> třídy, která je prázdná a použije zadaný porovnávač rovnosti pro typ sady.
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))
Parametry
- comparer
- IEqualityComparer<T>
Implementace IEqualityComparer<T> , která se má použít při porovnávání hodnot v sadě, nebo null
k použití výchozí EqualityComparer<T> implementace pro typ sady.
Poznámky
Kapacita objektu HashSet<T> je počet prvků, které objekt může obsahovat. Kapacita HashSet<T> objektu se automaticky zvyšuje při přidání prvků do objektu.
Tento konstruktor je operace O(1).
Platí pro
HashSet<T>(Int32)
- Zdroj:
- HashSet.cs
- Zdroj:
- HashSet.cs
- Zdroj:
- HashSet.cs
Inicializuje novou instanci HashSet<T> třídy, která je prázdná, ale má vyhrazené místo pro capacity
položky a použije výchozí porovnávač rovnosti pro typ sady.
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)
Parametry
- capacity
- Int32
Počáteční velikost .HashSet<T>
Poznámky
Vzhledem k tomu, že změny velikosti jsou poměrně nákladné (vyžadují reashing), pokusí se to minimalizovat potřebu změny velikosti nastavením počáteční kapacity na základě hodnoty objektu capacity
.
Platí pro
HashSet<T>(IEnumerable<T>, IEqualityComparer<T>)
- Zdroj:
- HashSet.cs
- Zdroj:
- HashSet.cs
- Zdroj:
- HashSet.cs
Inicializuje novou instanci HashSet<T> třídy, která používá zadaný porovnávač rovnosti pro typ sady, obsahuje prvky zkopírované ze zadané kolekce a má dostatečnou kapacitu pro přizpůsobení počtu zkopírovaných prvků.
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))
Parametry
- collection
- IEnumerable<T>
Kolekce, jejíž prvky jsou zkopírovány do nové sady.
- comparer
- IEqualityComparer<T>
Implementace IEqualityComparer<T> , která se má použít při porovnávání hodnot v sadě, nebo null
k použití výchozí EqualityComparer<T> implementace pro typ sady.
Výjimky
collection
je null
.
Příklady
Následující příklad používá zadaný IEqualityComparer<T> objekt, který umožňuje porovnávání prvků HashSet<T> kolekce typů vozidel bez rozlišování velkých a malých písmen.
#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
Poznámky
Kapacita objektu HashSet<T> je počet prvků, které objekt může obsahovat. Kapacita HashSet<T> objektu se automaticky zvyšuje při přidání prvků do objektu.
Pokud collection
obsahuje duplicity, bude sada obsahovat jeden z každého jedinečného prvku. Nebude vyvolána žádná výjimka. Velikost výsledné sady proto není shodná s velikostí souboru collection
.
Tento konstruktor je operace O(n
), kde n
je počet prvků v parametru collection
.
Platí pro
HashSet<T>(Int32, IEqualityComparer<T>)
- Zdroj:
- HashSet.cs
- Zdroj:
- HashSet.cs
- Zdroj:
- HashSet.cs
Inicializuje novou instanci HashSet<T> třídy, která používá zadaný porovnávač rovnosti pro typ sady a má dostatečnou kapacitu pro pojmout capacity
prvky.
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))
Parametry
- capacity
- Int32
Počáteční velikost .HashSet<T>
- comparer
- IEqualityComparer<T>
Implementace IEqualityComparer<T> , která se má použít při porovnávání hodnot v sadě nebo null (Nothing v jazyce Visual Basic) pro použití výchozí IEqualityComparer<T> implementace pro typ sady.
Poznámky
Vzhledem k tomu, že změny velikosti jsou poměrně nákladné (vyžadují reashing), pokusí se to minimalizovat potřebu změny velikosti nastavením počáteční kapacity na základě hodnoty objektu capacity
.
Platí pro
HashSet<T>(SerializationInfo, StreamingContext)
- Zdroj:
- HashSet.cs
- Zdroj:
- HashSet.cs
- Zdroj:
- HashSet.cs
Upozornění
This API supports obsolete formatter-based serialization. It should not be called or extended by application code.
Inicializuje novou instanci třídy HashSet<T> se serializovanými daty.
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)
Parametry
- info
- SerializationInfo
Objekt SerializationInfo , který obsahuje informace potřebné k serializaci objektu HashSet<T> .
- context
- StreamingContext
Struktura StreamingContext , která obsahuje zdroj a cíl serializovaného datového proudu přidruženého k objektu HashSet<T> .
- Atributy
Poznámky
Tento konstruktor je volána během deserializace rekonstituovat objekt, který je přenášen přes datový proud. Další informace naleznete v tématu SERIALIZACE XML a SOAP.