Bagikan melalui


HashSet<T> Konstruktor

Definisi

Menginisialisasi instans baru kelas HashSet<T>.

Overload

HashSet<T>()

Menginisialisasi instans HashSet<T> baru kelas yang kosong dan menggunakan perbandingan kesetaraan default untuk jenis yang ditetapkan.

HashSet<T>(IEnumerable<T>)

Menginisialisasi instans HashSet<T> baru kelas yang menggunakan perbandingan kesetaraan default untuk jenis yang ditetapkan, berisi elemen yang disalin dari koleksi yang ditentukan, dan memiliki kapasitas yang memadai untuk mengakomodasi jumlah elemen yang disalin.

HashSet<T>(IEqualityComparer<T>)

Menginisialisasi instans HashSet<T> baru kelas yang kosong dan menggunakan perbandingan kesetaraan yang ditentukan untuk jenis yang ditetapkan.

HashSet<T>(Int32)

Menginisialisasi instans HashSet<T> baru kelas yang kosong, tetapi telah mencadangkan ruang untuk capacity item dan menggunakan perbandingan kesetaraan default untuk jenis yang ditetapkan.

HashSet<T>(IEnumerable<T>, IEqualityComparer<T>)

Menginisialisasi instans HashSet<T> baru kelas yang menggunakan perbandingan kesetaraan yang ditentukan untuk jenis yang ditetapkan, berisi elemen yang disalin dari koleksi yang ditentukan, dan memiliki kapasitas yang memadai untuk mengakomodasi jumlah elemen yang disalin.

HashSet<T>(Int32, IEqualityComparer<T>)

Menginisialisasi instans HashSet<T> baru kelas yang menggunakan perbandingan kesetaraan yang ditentukan untuk jenis yang ditetapkan, dan memiliki kapasitas yang memadai untuk mengakomodasi capacity elemen.

HashSet<T>(SerializationInfo, StreamingContext)
Kedaluwarsa.

Menginisialisasi instans HashSet<T> baru kelas dengan data berseri.

HashSet<T>()

Sumber:
HashSet.cs
Sumber:
HashSet.cs
Sumber:
HashSet.cs

Menginisialisasi instans HashSet<T> baru kelas yang kosong dan menggunakan perbandingan kesetaraan default untuk jenis yang ditetapkan.

public:
 HashSet();
public HashSet ();
Public Sub New ()

Contoh

Contoh berikut menunjukkan cara membuat dan mengisi dua HashSet<T> objek. Contoh ini adalah bagian dari contoh yang lebih besar yang disediakan untuk metode .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

Keterangan

Kapasitas HashSet<T> objek adalah jumlah elemen yang dapat ditahan objek. Kapasitas HashSet<T> objek secara otomatis meningkat saat elemen ditambahkan ke objek .

Konstruktor ini adalah operasi O(1).

Berlaku untuk

HashSet<T>(IEnumerable<T>)

Sumber:
HashSet.cs
Sumber:
HashSet.cs
Sumber:
HashSet.cs

Menginisialisasi instans HashSet<T> baru kelas yang menggunakan perbandingan kesetaraan default untuk jenis yang ditetapkan, berisi elemen yang disalin dari koleksi yang ditentukan, dan memiliki kapasitas yang memadai untuk mengakomodasi jumlah elemen yang disalin.

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))

Parameter

collection
IEnumerable<T>

Koleksi yang elemennya disalin ke set baru.

Pengecualian

collectionadalah null.

Contoh

Contoh berikut menunjukkan cara membuat HashSet<T> koleksi dari set yang sudah ada. Dalam contoh ini, dua set dibuat dengan bilangan bulat genap dan ganjil, masing-masing. Objek ketiga HashSet<T> kemudian dibuat dari set bilangan bulat genap.

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

Keterangan

Kapasitas HashSet<T> objek adalah jumlah elemen yang dapat ditahan objek. Kapasitas HashSet<T> objek secara otomatis meningkat saat elemen ditambahkan ke objek .

Jika collection berisi duplikat, set akan berisi salah satu dari setiap elemen unik. Tak terkecuali akan dilemparkan. Oleh karena itu, ukuran set yang dihasilkan tidak identik dengan ukuran collection.

Konstruktor ini adalah operasi O(n), di mana n adalah jumlah elemen dalam collection parameter .

Berlaku untuk

HashSet<T>(IEqualityComparer<T>)

Sumber:
HashSet.cs
Sumber:
HashSet.cs
Sumber:
HashSet.cs

Menginisialisasi instans HashSet<T> baru kelas yang kosong dan menggunakan perbandingan kesetaraan yang ditentukan untuk jenis yang ditetapkan.

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))

Parameter

comparer
IEqualityComparer<T>

Implementasi IEqualityComparer<T> yang digunakan saat membandingkan nilai dalam set, atau null untuk menggunakan implementasi default EqualityComparer<T> untuk jenis yang ditetapkan.

Keterangan

Kapasitas HashSet<T> objek adalah jumlah elemen yang dapat ditahan objek. Kapasitas HashSet<T> objek secara otomatis meningkat saat elemen ditambahkan ke objek .

Konstruktor ini adalah operasi O(1).

Berlaku untuk

HashSet<T>(Int32)

Sumber:
HashSet.cs
Sumber:
HashSet.cs
Sumber:
HashSet.cs

Menginisialisasi instans HashSet<T> baru kelas yang kosong, tetapi telah mencadangkan ruang untuk capacity item dan menggunakan perbandingan kesetaraan default untuk jenis yang ditetapkan.

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)

Parameter

capacity
Int32

Ukuran HashSet<T>awal .

Keterangan

Karena pengubahan ukuran relatif mahal (memerlukan pengulangan), upaya ini untuk meminimalkan kebutuhan untuk mengubah ukuran dengan mengatur kapasitas awal berdasarkan nilai capacity.

Berlaku untuk

HashSet<T>(IEnumerable<T>, IEqualityComparer<T>)

Sumber:
HashSet.cs
Sumber:
HashSet.cs
Sumber:
HashSet.cs

Menginisialisasi instans HashSet<T> baru kelas yang menggunakan perbandingan kesetaraan yang ditentukan untuk jenis yang ditetapkan, berisi elemen yang disalin dari koleksi yang ditentukan, dan memiliki kapasitas yang memadai untuk mengakomodasi jumlah elemen yang disalin.

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))

Parameter

collection
IEnumerable<T>

Koleksi yang elemennya disalin ke set baru.

comparer
IEqualityComparer<T>

Implementasi IEqualityComparer<T> yang digunakan saat membandingkan nilai dalam set, atau null untuk menggunakan implementasi default EqualityComparer<T> untuk jenis yang ditetapkan.

Pengecualian

collectionadalah null.

Contoh

Contoh berikut menggunakan yang disediakan untuk memungkinkan perbandingan IEqualityComparer<T> yang tidak peka huruf besar/kecil pada elemen HashSet<T> kumpulan jenis kendaraan.

#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

Keterangan

Kapasitas HashSet<T> objek adalah jumlah elemen yang dapat ditahan objek. Kapasitas HashSet<T> objek secara otomatis meningkat saat elemen ditambahkan ke objek .

Jika collection berisi duplikat, set akan berisi salah satu dari setiap elemen unik. Tak terkecuali akan dilemparkan. Oleh karena itu, ukuran set yang dihasilkan tidak identik dengan ukuran collection.

Konstruktor ini adalah operasi O(n), di mana n adalah jumlah elemen dalam collection parameter .

Berlaku untuk

HashSet<T>(Int32, IEqualityComparer<T>)

Sumber:
HashSet.cs
Sumber:
HashSet.cs
Sumber:
HashSet.cs

Menginisialisasi instans HashSet<T> baru kelas yang menggunakan perbandingan kesetaraan yang ditentukan untuk jenis yang ditetapkan, dan memiliki kapasitas yang memadai untuk mengakomodasi capacity elemen.

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))

Parameter

capacity
Int32

Ukuran HashSet<T>awal .

comparer
IEqualityComparer<T>

Implementasi IEqualityComparer<T> yang digunakan saat membandingkan nilai dalam set, atau null (Tidak ada di Visual Basic) untuk menggunakan implementasi default IEqualityComparer<T> untuk jenis yang ditetapkan.

Keterangan

Karena pengubahan ukuran relatif mahal (memerlukan pengulangan), upaya ini untuk meminimalkan kebutuhan untuk mengubah ukuran dengan mengatur kapasitas awal berdasarkan nilai capacity.

Berlaku untuk

HashSet<T>(SerializationInfo, StreamingContext)

Sumber:
HashSet.cs
Sumber:
HashSet.cs
Sumber:
HashSet.cs

Perhatian

This API supports obsolete formatter-based serialization. It should not be called or extended by application code.

Menginisialisasi instans HashSet<T> baru kelas dengan data berseri.

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)

Parameter

info
SerializationInfo

Objek SerializationInfo yang berisi informasi yang diperlukan untuk membuat serial objek HashSet<T> .

context
StreamingContext

StreamingContext Struktur yang berisi sumber dan tujuan aliran berseri yang terkait dengan HashSet<T> objek .

Atribut

Keterangan

Konstruktor ini dipanggil selama deserialisasi untuk menyusun ulang objek yang ditransmisikan melalui aliran. Untuk informasi selengkapnya, lihat Serialisasi XML dan SOAP.

Berlaku untuk