HashSet<T> HashSet<T> HashSet<T> HashSet<T> Class

Definition

Representa um conjunto de valores. Represents a set of values.

generic <typename T>
public ref class HashSet : System::Collections::Generic::ICollection<T>, System::Collections::Generic::IEnumerable<T>, System::Collections::Generic::IReadOnlyCollection<T>, System::Collections::Generic::ISet<T>, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
[Serializable]
public class HashSet<T> : System.Collections.Generic.ICollection<T>, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.IReadOnlyCollection<T>, System.Collections.Generic.ISet<T>, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
type HashSet<'T> = class
    interface ICollection<'T>
    interface ISerializable
    interface IDeserializationCallback
    interface ISet<'T>
    interface IReadOnlyCollection<'T>
    interface seq<'T>
    interface IEnumerable
Public Class HashSet(Of T)
Implements ICollection(Of T), IDeserializationCallback, IEnumerable(Of T), IReadOnlyCollection(Of T), ISerializable, ISet(Of T)

Type Parameters

T

O tipo dos elementos no conjunto de hash. The type of elements in the hash set.

Inheritance
HashSet<T>HashSet<T>HashSet<T>HashSet<T>
Attributes
SerializableAttribute
Implements

Examples

O exemplo a seguir demonstra como mesclar dois conjuntos distintos.The following example demonstrates how to merge two disparate sets. Este exemplo cria dois HashSet<T> objetos e os preenche com números e ímpares, respectivamente.This example creates two HashSet<T> objects, and populates them with even and odd numbers, respectively. Um terceiro HashSet<T> objeto é criado no conjunto que contém os números pares.A third HashSet<T> object is created from the set that contains the even numbers. O exemplo, em seguida, chama o UnionWith método, que adiciona o número ímpar definido para o terceiro conjunto.The example then calls the UnionWith method, which adds the odd number set to the third set.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        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);

    }

    private static void DisplaySet(HashSet<int> set)
    {
        Console.Write("{");
        foreach (int i in set)
        {
            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 }
 */
Imports System
Imports System.Collections.Generic

Class Program

    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


    Private Shared Sub DisplaySet(ByVal coll As HashSet(Of Integer))
        Console.Write("{")
        For Each i As Integer In coll
            Console.Write(" {0}", i)
        Next i
        Console.WriteLine(" }")
    End Sub

End Class
' 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 }

Remarks

O HashSet<T> classe fornece operações de conjunto de alto desempenho.The HashSet<T> class provides high-performance set operations. Um conjunto é uma coleção que não contém elementos duplicados, e cujos elementos estão em nenhuma ordem específica.A set is a collection that contains no duplicate elements, and whose elements are in no particular order.

Observação

HashSet<T> implementa o IReadOnlyCollection<T> interface começando com o .NET Framework 4.6.NET Framework 4.6; nas versões anteriores do .NET Framework, o HashSet<T> classe não implementou esta interface.HashSet<T> implements the IReadOnlyCollection<T> interface starting with the .NET Framework 4.6.NET Framework 4.6; in previous versions of the .NET Framework, the HashSet<T> class did not implement this interface.

A capacidade de um objeto HashSet<T> é o número de elementos que o objeto pode conter.The capacity of a HashSet<T> object is the number of elements that the object can hold. A capacidade de um objeto HashSet<T> aumenta automaticamente à medida que elementos são adicionados ao objeto.A HashSet<T> object's capacity automatically increases as elements are added to the object.

O HashSet<T> classe baseia-se no modelo de conjuntos matemáticos e fornece operações de conjunto de alto desempenho semelhante ao acessar as chaves da Dictionary<TKey,TValue> ou Hashtable coleções.The HashSet<T> class is based on the model of mathematical sets and provides high-performance set operations similar to accessing the keys of the Dictionary<TKey,TValue> or Hashtable collections. Em termos simples, o HashSet<T> classe pode ser pensada como um Dictionary<TKey,TValue> coleção sem valores.In simple terms, the HashSet<T> class can be thought of as a Dictionary<TKey,TValue> collection without values.

Um HashSet<T> coleção não está classificada e não pode conter elementos duplicados.A HashSet<T> collection is not sorted and cannot contain duplicate elements. Se a ordem ou elemento de duplicação é mais importante que o desempenho de seu aplicativo, considere usar o List<T> classe junto com o Sort método.If order or element duplication is more important than performance for your application, consider using the List<T> class together with the Sort method.

HashSet<T> fornece muitos matemáticas conjunto de operações, como a adição de conjunto (uniões) e subtração de conjunto.HashSet<T> provides many mathematical set operations, such as set addition (unions) and set subtraction. A tabela a seguir lista fornecido HashSet<T> operações e seus equivalentes matemáticos.The following table lists the provided HashSet<T> operations and their mathematical equivalents.

Operação de HashSetHashSet operation Matemática equivalenteMathematical equivalent
UnionWith União ou conjunto de adiçãoUnion or set addition
IntersectWith InterseçãoIntersection
ExceptWith Subtração de conjuntoSet subtraction
SymmetricExceptWith Diferença simétricaSymmetric difference

Além das operações de conjunto listadas, o HashSet<T> classe também fornece métodos para determinar igualdade de conjunto, sobreposição de conjuntos, e se um conjunto é um subconjunto ou superconjunto de outro conjunto.In addition to the listed set operations, the HashSet<T> class also provides methods for determining set equality, overlap of sets, and whether a set is a subset or superset of another set.

Para grandes HashSet<T> objetos, você pode aumentar a capacidade máxima para 2 bilhões de elementos em um sistema de 64 bits, definindo o enabled atributo do elemento de configuração para true no ambiente de tempo de execução.For very large HashSet<T> objects, you can increase the maximum capacity to 2 billion elements on a 64-bit system by setting the enabled attribute of the configuration element to true in the run-time environment.

Começando com o .NET Framework 4.NET Framework 4, o HashSet<T> classe implementa o ISet<T> interface.Starting with the .NET Framework 4.NET Framework 4, the HashSet<T> class implements the ISet<T> interface.

Operações de conjunto com HashSet e LINQHashSet and LINQ Set Operations

LINQ fornece acesso para o Distinct, Union, Intersect e Except definir operações em qualquer fonte de dados que implementa o IEnumerable ou IQueryable interfaces.LINQ provides access to the Distinct, Union, Intersect and Except set operations on any data source that implements the IEnumerable or IQueryable interfaces. HashSet<T> Fornece um conjunto maior e mais robusto de operações de conjunto.HashSet<T> provides a larger and more robust collection of set operations. Por exemplo, HashSet<T> fornece as comparações, como IsSubsetOf e IsSupersetOf.For example, HashSet<T> provides comparisons such as IsSubsetOf and IsSupersetOf.

Operações de conjunto a principal diferença entre LINQ e HashSet<T> operações é que as operações de conjunto LINQ sempre retornam uma nova IEnumerable<T> coleção, enquanto o HashSet<T> métodos equivalentes modificam a coleção atual.The primary difference between LINQ set operations and HashSet<T> operations is that LINQ set operations always return a new IEnumerable<T> collection, whereas the HashSet<T> equivalent methods modify the current collection.

Normalmente, se você deve criar um novo conjunto ou se seu aplicativo precisa acessar apenas as operações de conjunto fornecido, usando o LINQ definir operações em qualquer IEnumerable<T> coleção ou matriz será suficiente.Typically, if you must create a new set or if your application needs access only to the provided set operations, using LINQ set operations on any IEnumerable<T> collection or array will be sufficient. No entanto, se seu aplicativo requer acesso a operações de conjunto adicionais, ou se não for desejável ou necessário criar uma nova coleção, use o HashSet<T> classe.However, if your application requires access to additional set operations, or if it is not desirable or necessary to create a new collection, use the HashSet<T> class.

A tabela a seguir mostra o HashSet<T> operações de conjunto de operações e seus equivalentes do LINQ.The following table shows the HashSet<T> operations and their equivalent LINQ set operations.

Operação de HashSetHashSet operation Equivalente do LINQLINQ equivalent
UnionWith Union
IntersectWith Intersect
ExceptWith Except
Não é fornecido.Not provided. Distinct
SymmetricExceptWith Não é fornecido.Not provided.
Overlaps Não é fornecido.Not provided.
IsSubsetOf Não é fornecido.Not provided.
IsProperSubsetOf Não é fornecido.Not provided.
IsSupersetOf Não é fornecido.Not provided.
IsProperSupersetOf Não é fornecido.Not provided.
SetEquals Não é fornecido.Not provided.

Constructors

HashSet<T>() HashSet<T>() HashSet<T>() HashSet<T>()

Inicializa uma nova instância da classe HashSet<T> que está vazia e usa o comparador de igualdade padrão para o tipo de conjunto. Initializes a new instance of the HashSet<T> class that is empty and uses the default equality comparer for the set type.

HashSet<T>(IEnumerable<T>) HashSet<T>(IEnumerable<T>) HashSet<T>(IEnumerable<T>) HashSet<T>(IEnumerable<T>)

Inicializa uma nova instância da classe HashSet<T> que usa o comparador de igualdade padrão para o tipo de conjunto, contém os elementos copiados da coleção especificada e tem capacidade suficiente para acomodar o número de elementos copiados. Initializes a new instance of the HashSet<T> class that uses the default equality comparer for the set type, contains elements copied from the specified collection, and has sufficient capacity to accommodate the number of elements copied.

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

Inicializa uma nova instância da classe HashSet<T> que usa o comparador de igualdado especificado para o tipo de conjunto, que contém os elementos copiados da coleção especificada e que tem capacidade suficiente para acomodar o número de elementos copiados. Initializes a new instance of the HashSet<T> class that uses the specified equality comparer for the set type, contains elements copied from the specified collection, and has sufficient capacity to accommodate the number of elements copied.

HashSet<T>(IEqualityComparer<T>) HashSet<T>(IEqualityComparer<T>) HashSet<T>(IEqualityComparer<T>) HashSet<T>(IEqualityComparer<T>)

Inicializa uma nova instância da classe HashSet<T> que está vazia e usa a comparação de igualdade especificada para o tipo de conjunto. Initializes a new instance of the HashSet<T> class that is empty and uses the specified equality comparer for the set type.

HashSet<T>(Int32) HashSet<T>(Int32) HashSet<T>(Int32) HashSet<T>(Int32)

Inicializa uma nova instância da classe HashSet<T> que está vazia, mas tem espaço reservado para capacity itens e usa o comparador de igualdade padrão para o tipo de conjunto. Initializes a new instance of the HashSet<T> class that is empty, but has reserved space for capacity items and uses the default equality comparer for the set type.

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

Inicializa uma nova instância da classe HashSet<T> que usa o comparador de igualdade especificado para o tipo de conjunto e tem capacidade suficiente para acomodar elementos capacity. Initializes a new instance of the HashSet<T> class that uses the specified equality comparer for the set type, and has sufficient capacity to accommodate capacity elements.

HashSet<T>(SerializationInfo, StreamingContext) HashSet<T>(SerializationInfo, StreamingContext) HashSet<T>(SerializationInfo, StreamingContext) HashSet<T>(SerializationInfo, StreamingContext)

Inicializa uma nova instância da classe HashSet<T> com dados serializados. Initializes a new instance of the HashSet<T> class with serialized data.

Properties

Comparer Comparer Comparer Comparer

Obtém o objeto IEqualityComparer<T> que é usado para determinar igualdade para os valores no conjunto. Gets the IEqualityComparer<T> object that is used to determine equality for the values in the set.

Count Count Count Count

Obtém o número de elementos contidos em um conjunto. Gets the number of elements that are contained in a set.

Methods

Add(T) Add(T) Add(T) Add(T)

Adiciona o elemento especificado a um conjunto. Adds the specified element to a set.

Clear() Clear() Clear() Clear()

Remove todos os elementos de um objeto HashSet<T>. Removes all elements from a HashSet<T> object.

Contains(T) Contains(T) Contains(T) Contains(T)

Determina se um objeto HashSet<T> contém o elemento especificado. Determines whether a HashSet<T> object contains the specified element.

CopyTo(T[]) CopyTo(T[]) CopyTo(T[]) CopyTo(T[])

Copia os elementos de um objeto HashSet<T> para uma matriz. Copies the elements of a HashSet<T> object to an array.

CopyTo(T[], Int32) CopyTo(T[], Int32) CopyTo(T[], Int32) CopyTo(T[], Int32)

Copia os elementos de um objeto HashSet<T> para uma matriz, começando no índice da matriz especificada. Copies the elements of a HashSet<T> object to an array, starting at the specified array index.

CopyTo(T[], Int32, Int32) CopyTo(T[], Int32, Int32) CopyTo(T[], Int32, Int32) CopyTo(T[], Int32, Int32)

Copia o número especificado de elementos de um objeto HashSet<T> para uma matriz, começando no índice especificado da matriz. Copies the specified number of elements of a HashSet<T> object to an array, starting at the specified array index.

CreateSetComparer() CreateSetComparer() CreateSetComparer() CreateSetComparer()

Retorna um objeto IEqualityComparer que pode ser usado para teste de igualdade de um objeto HashSet<T>. Returns an IEqualityComparer object that can be used for equality testing of a HashSet<T> object.

EnsureCapacity(Int32) EnsureCapacity(Int32) EnsureCapacity(Int32) EnsureCapacity(Int32)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina se o objeto especificado é igual ao objeto atual. Determines whether the specified object is equal to the current object.

(Inherited from Object)
ExceptWith(IEnumerable<T>) ExceptWith(IEnumerable<T>) ExceptWith(IEnumerable<T>) ExceptWith(IEnumerable<T>)

Remove todos os elementos na coleção especificada do objeto HashSet<T> atual. Removes all elements in the specified collection from the current HashSet<T> object.

GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Retorna um enumerador que itera por meio de um objeto HashSet<T>. Returns an enumerator that iterates through a HashSet<T> object.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Serve como a função de hash padrão. Serves as the default hash function.

(Inherited from Object)
GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext)

Implementa a interface ISerializable e retorna os dados necessários para serializar um objeto HashSet<T>. Implements the ISerializable interface and returns the data needed to serialize a HashSet<T> object.

GetType() GetType() GetType() GetType()

Obtém o Type da instância atual. Gets the Type of the current instance.

(Inherited from Object)
IntersectWith(IEnumerable<T>) IntersectWith(IEnumerable<T>) IntersectWith(IEnumerable<T>) IntersectWith(IEnumerable<T>)

Modifica o objeto HashSet<T> atual para que ele contenha somente elementos presentes no objeto e na coleção especificada. Modifies the current HashSet<T> object to contain only elements that are present in that object and in the specified collection.

IsProperSubsetOf(IEnumerable<T>) IsProperSubsetOf(IEnumerable<T>) IsProperSubsetOf(IEnumerable<T>) IsProperSubsetOf(IEnumerable<T>)

Determina se um objeto HashSet<T> é um subconjunto apropriado da coleção especificada. Determines whether a HashSet<T> object is a proper subset of the specified collection.

IsProperSupersetOf(IEnumerable<T>) IsProperSupersetOf(IEnumerable<T>) IsProperSupersetOf(IEnumerable<T>) IsProperSupersetOf(IEnumerable<T>)

Determina se um objeto HashSet<T> é um superconjunto apropriado da coleção especificada. Determines whether a HashSet<T> object is a proper superset of the specified collection.

IsSubsetOf(IEnumerable<T>) IsSubsetOf(IEnumerable<T>) IsSubsetOf(IEnumerable<T>) IsSubsetOf(IEnumerable<T>)

Determina se um objeto HashSet<T> é um subconjunto da coleção especificada. Determines whether a HashSet<T> object is a subset of the specified collection.

IsSupersetOf(IEnumerable<T>) IsSupersetOf(IEnumerable<T>) IsSupersetOf(IEnumerable<T>) IsSupersetOf(IEnumerable<T>)

Determina se um objeto HashSet<T> é um superconjunto da coleção especificada. Determines whether a HashSet<T> object is a superset of the specified collection.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Cria uma cópia superficial do Object atual. Creates a shallow copy of the current Object.

(Inherited from Object)
OnDeserialization(Object) OnDeserialization(Object) OnDeserialization(Object) OnDeserialization(Object)

Implementa a interface ISerializable e gera o evento de desserialização quando a desserialização for concluída. Implements the ISerializable interface and raises the deserialization event when the deserialization is complete.

Overlaps(IEnumerable<T>) Overlaps(IEnumerable<T>) Overlaps(IEnumerable<T>) Overlaps(IEnumerable<T>)

Determina se o objeto HashSet<T> atual e uma coleção especificada compartilham elementos comuns. Determines whether the current HashSet<T> object and a specified collection share common elements.

Remove(T) Remove(T) Remove(T) Remove(T)

Remove o elemento especificado de um objeto HashSet<T>. Removes the specified element from a HashSet<T> object.

RemoveWhere(Predicate<T>) RemoveWhere(Predicate<T>) RemoveWhere(Predicate<T>) RemoveWhere(Predicate<T>)

Remove todos os elementos que correspondem às condições definidas pelo predicado especificado de uma coleção de HashSet<T>. Removes all elements that match the conditions defined by the specified predicate from a HashSet<T> collection.

SetEquals(IEnumerable<T>) SetEquals(IEnumerable<T>) SetEquals(IEnumerable<T>) SetEquals(IEnumerable<T>)

Determina se um objeto HashSet<T> e coleção especificada contêm os mesmos elementos. Determines whether a HashSet<T> object and the specified collection contain the same elements.

SymmetricExceptWith(IEnumerable<T>) SymmetricExceptWith(IEnumerable<T>) SymmetricExceptWith(IEnumerable<T>) SymmetricExceptWith(IEnumerable<T>)

Modifica o objeto HashSet<T> atual para que ele contenha somente elementos que estão presentes no objeto ou na coleção especificada, mas não em ambos. Modifies the current HashSet<T> object to contain only elements that are present either in that object or in the specified collection, but not both.

ToString() ToString() ToString() ToString()

Retorna uma cadeia de caracteres que representa o objeto atual. Returns a string that represents the current object.

(Inherited from Object)
TrimExcess() TrimExcess() TrimExcess() TrimExcess()

Define a capacidade de um objeto HashSet<T> para o número real de elementos que ele contém, arredondado para cima para um valor próximo específico da implementação. Sets the capacity of a HashSet<T> object to the actual number of elements it contains, rounded up to a nearby, implementation-specific value.

TryGetValue(T, T) TryGetValue(T, T) TryGetValue(T, T) TryGetValue(T, T)

Pesquisa um determinado valor no conjunto e retorna o valor igual que for encontrado, se houver. Searches the set for a given value and returns the equal value it finds, if any.

UnionWith(IEnumerable<T>) UnionWith(IEnumerable<T>) UnionWith(IEnumerable<T>) UnionWith(IEnumerable<T>)

Modifica o objeto HashSet<T> atual para que ele contenha todos os elementos presentes nele, na coleção especificada ou em ambos. Modifies the current HashSet<T> object to contain all elements that are present in itself, the specified collection, or both.

Explicit Interface Implementations

ICollection<T>.Add(T) ICollection<T>.Add(T) ICollection<T>.Add(T) ICollection<T>.Add(T)

Adiciona um item a um objeto ICollection<T>. Adds an item to an ICollection<T> object.

ICollection<T>.IsReadOnly ICollection<T>.IsReadOnly ICollection<T>.IsReadOnly ICollection<T>.IsReadOnly

Obtém um valor que indica se uma coleção é somente leitura. Gets a value indicating whether a collection is read-only.

IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator()

Retorna um enumerador que itera em uma coleção. Returns an enumerator that iterates through a collection.

IEnumerable<T>.GetEnumerator() IEnumerable<T>.GetEnumerator() IEnumerable<T>.GetEnumerator() IEnumerable<T>.GetEnumerator()

Retorna um enumerador que itera em uma coleção. Returns an enumerator that iterates through a collection.

Applies to

See Also