HashSet Constructors
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Initializes a new instance of the HashSet
Overloads
| Name | Description |
|---|---|
|
HashSet |
Initializes a new instance of the HashSet |
|
HashSet |
Initializes a new instance of the HashSet |
|
HashSet |
Initializes a new instance of the HashSet |
|
HashSet |
Initializes a new instance of the HashSet |
|
HashSet |
Initializes a new instance of the HashSet |
|
HashSet |
Initializes a new instance of the HashSet |
|
HashSet |
Obsolete.
Initializes a new instance of the HashSet |
HashSet()
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
Initializes a new instance of the HashSet
public:
HashSet();
public HashSet();
Public Sub New ()
Examples
The following example demonstrates how to create and populate two HashSet
HashSet evenNumbers = new HashSet();
HashSet oddNumbers = new HashSet();
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
Remarks
The capacity of a HashSet
This constructor is an O(1) operation.
Applies to
HashSet(IEnumerable)
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
Initializes a new instance of the HashSet
public:
HashSet(System::Collections::Generic::IEnumerable ^ collection);
public HashSet(System.Collections.Generic.IEnumerable collection);
new System.Collections.Generic.HashSet<'T> : seq<'T> -> System.Collections.Generic.HashSet<'T>
Public Sub New (collection As IEnumerable(Of T))
Parameters
- collection
-
IEnumerable
The collection whose elements are copied to the new set.
Exceptions
collection is null.
Examples
The following example shows how to create a HashSet
HashSet evenNumbers = new HashSet();
HashSet oddNumbers = new HashSet();
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 numbers = new HashSet(evenNumbers);
Console.WriteLine("numbers UnionWith oddNumbers...");
numbers.UnionWith(oddNumbers);
Console.Write("numbers contains {0} elements: ", numbers.Count);
DisplaySet(numbers);
void DisplaySet(HashSet 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 }
*/
let displaySet (collection: HashSet) =
printf "{"
for i in collection do
printf $" {i}"
printfn " }"
let evenNumbers = HashSet()
let oddNumbers = HashSet()
for i = 0 to 4 do
// Populate numbers with just even numbers.
evenNumbers.Add(i * 2) |> ignore
// Populate oddNumbers with just odd numbers.
oddNumbers.Add(i * 2 + 1) |> ignore
printf $"evenNumbers contains {evenNumbers.Count} elements: "
displaySet evenNumbers
printf $"oddNumbers contains {oddNumbers.Count} elements: "
displaySet oddNumbers
// Create a new HashSet populated with even numbers.
let numbers = HashSet evenNumbers
printfn "numbers UnionWith oddNumbers..."
numbers.UnionWith oddNumbers
printf $"numbers contains {numbers.Count} elements: "
displaySet numbers
// 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
Remarks
The capacity of a HashSet
If collection contains duplicates, the set will contain one of each unique element. No exception will be thrown. Therefore, the size of the resulting set is not identical to the size of collection.
This constructor is an O(n) operation, where n is the number of elements in the collection parameter.
Applies to
HashSet(IEqualityComparer)
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
Initializes a new instance of the HashSet
public:
HashSet(System::Collections::Generic::IEqualityComparer ^ comparer);
public HashSet(System.Collections.Generic.IEqualityComparer comparer);
public HashSet(System.Collections.Generic.IEqualityComparer? 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))
Parameters
- comparer
-
IEqualityComparer
The IEqualityComparernull to use the default EqualityComparer
Remarks
The capacity of a HashSet
This constructor is an O(1) operation.
Applies to
HashSet(Int32)
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
Initializes a new instance of the HashSetcapacity items and uses the default equality comparer for the set type.
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)
Parameters
Remarks
Since resizes are relatively expensive (require rehashing), this attempts to minimize the need to resize by setting the initial capacity based on the value of the capacity.
Caution
If capacity comes from user input, prefer using a constructor overload without a capacity parameter, and let the collection resize as elements are added. If you must use a user-specified value, either clamp it to a reasonable limit (for example, Math.Clamp(untrustedValue, 0, 20)), or verify that the element count matches the specified value.
Applies to
HashSet(IEnumerable, IEqualityComparer)
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
Initializes a new instance of the HashSet
public:
HashSet(System::Collections::Generic::IEnumerable ^ collection, System::Collections::Generic::IEqualityComparer ^ comparer);
public HashSet(System.Collections.Generic.IEnumerable collection, System.Collections.Generic.IEqualityComparer comparer);
public HashSet(System.Collections.Generic.IEnumerable collection, System.Collections.Generic.IEqualityComparer? 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))
Parameters
- collection
-
IEnumerable
The collection whose elements are copied to the new set.
- comparer
-
IEqualityComparer
The IEqualityComparernull to use the default EqualityComparer
Exceptions
collection is null.
Examples
The following example uses a supplied IEqualityComparer
HashSet allVehicles = new HashSet(StringComparer.OrdinalIgnoreCase);
List someVehicles = new List();
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
let allVehicles = HashSet StringComparer.OrdinalIgnoreCase
let someVehicles = ResizeArray()
someVehicles.Add "Planes"
someVehicles.Add "Trains"
someVehicles.Add "Automobiles"
// Add in the vehicles contained in the someVehicles list.
allVehicles.UnionWith someVehicles
printfn "The current HashSet contains:\n"
for vehicle in allVehicles do
printfn $"{vehicle}"
allVehicles.Add "Ships" |> ignore
allVehicles.Add "Motorcycles" |> ignore
allVehicles.Add "Rockets" |> ignore
allVehicles.Add "Helicopters" |> ignore
allVehicles.Add "Submarines" |> ignore
printfn "\nThe updated HashSet contains:\n"
for vehicle in allVehicles do
printfn $"{vehicle}"
// Verify that the 'All Vehicles' set contains at least the vehicles in
// the 'Some Vehicles' list.
if allVehicles.IsSupersetOf someVehicles then
printfn "\nThe 'All' vehicles set contains everything in 'Some' vehicles list."
// Check for Rockets. Here the OrdinalIgnoreCase comparer will compare
// true for the mixed-case vehicle type.
if allVehicles.Contains "roCKeTs" then
printfn "\nThe 'All' vehicles set contains 'roCKeTs'"
allVehicles.ExceptWith someVehicles
printfn "\nThe excepted HashSet contains:\n"
for vehicle in allVehicles do
printfn $"{vehicle}"
// Predicate to determine vehicle 'coolness'.
let isNotSuperCool vehicle =
let superCool = vehicle = "Helicopters" || vehicle = "Motorcycles"
not superCool
// Remove all the vehicles that are not 'super cool'.
allVehicles.RemoveWhere isNotSuperCool |> ignore
printfn "\nThe super cool vehicles are:\n"
for vehicle in allVehicles do
printfn $"{vehicle}"
// 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' vehicles 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
Remarks
The capacity of a HashSet
If collection contains duplicates, the set will contain one of each unique element. No exception will be thrown. Therefore, the size of the resulting set is not identical to the size of collection.
This constructor is an O(n) operation, where n is the number of elements in the collection parameter.
Applies to
HashSet(Int32, IEqualityComparer)
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
Initializes a new instance of the HashSetcapacity elements.
public:
HashSet(int capacity, System::Collections::Generic::IEqualityComparer ^ comparer);
public HashSet(int capacity, System.Collections.Generic.IEqualityComparer? comparer);
public HashSet(int capacity, System.Collections.Generic.IEqualityComparer 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))
Parameters
- comparer
-
IEqualityComparer
The IEqualityComparer
Remarks
Since resizes are relatively expensive (require rehashing), this attempts to minimize the need to resize by setting the initial capacity based on the value of the capacity.
Caution
If capacity comes from user input, prefer using a constructor overload without a capacity parameter, and let the collection resize as elements are added. If you must use a user-specified value, either clamp it to a reasonable limit (for example, Math.Clamp(untrustedValue, 0, 20)), or verify that the element count matches the specified value.
Applies to
HashSet(SerializationInfo, StreamingContext)
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
- Source:
- HashSet.cs
Caution
This API supports obsolete formatter-based serialization. It should not be called or extended by application code.
Initializes a new instance of the HashSet
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);
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>
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)
Parameters
- info
- SerializationInfo
A SerializationInfo object that contains the information required to serialize the HashSet
- context
- StreamingContext
A StreamingContext structure that contains the source and destination of the serialized stream associated with the HashSet
- Attributes
Remarks
This constructor is called during deserialization to reconstitute an object that is transmitted over a stream. For more information, see XML and SOAP Serialization.