CollectionsUtil Classe

Definição

Cria coleções que ignoram o caso em cadeias de caracteres.

public ref class CollectionsUtil
public class CollectionsUtil
type CollectionsUtil = class
Public Class CollectionsUtil
Herança
CollectionsUtil

Exemplos

O exemplo a seguir usa duas coleções, uma tabela de hash e uma lista classificada, para manter valores populacionais para um grupo de cidades. Os valores são recuperados das coleções usando os nomes de cidade como chaves. Os nomes da cidade estão em maiúsculas e minúsculas para mostrar seu uso como chaves que não diferenciam maiúsculas de minúsculas.

using System;
using System.Collections;
using System.Collections.Specialized;

class TestCollectionsUtils
{
    public static void Main()
    {
        Hashtable population1 = CollectionsUtil.CreateCaseInsensitiveHashtable();

        population1["Trapperville"] = 15;
        population1["Doggerton"] = 230;
        population1["New Hollow"] = 1234;
        population1["McHenry"] = 185;

        // Select cities from the table using mixed case.
        Console.WriteLine("Case insensitive hashtable results:\n");
        Console.WriteLine("{0}'s population is: {1}", "Trapperville", population1["trapperville"]);
        Console.WriteLine("{0}'s population is: {1}", "Doggerton", population1["DOGGERTON"]);
        Console.WriteLine("{0}'s population is: {1}", "New Hollow", population1["New hoLLow"]);
        Console.WriteLine("{0}'s population is: {1}", "McHenry", population1["MchenrY"]);

        SortedList population2 = CollectionsUtil.CreateCaseInsensitiveSortedList();

        foreach (string city in population1.Keys)
        {
           population2.Add(city, population1[city]);
        }

        // Select cities from the sorted list using mixed case.
        Console.WriteLine("\nCase insensitive sorted list results:\n");
        Console.WriteLine("{0}'s population is: {1}", "Trapperville", population2["trapPeRVille"]);
        Console.WriteLine("{0}'s population is: {1}", "Doggerton", population2["dOGGeRtON"]);
        Console.WriteLine("{0}'s population is: {1}", "New Hollow", population2["nEW hOLLOW"]);
        Console.WriteLine("{0}'s population is: {1}", "McHenry", population2["MchEnrY"]);
    }
}

// This program displays the following output to the console
//
// Case insensitive hashtable results:
//
// Trapperville's population is: 15
// Doggerton's population is: 230
// New Hollow's population is: 1234
// McHenry's population is: 185
//
// Case insensitive sorted list results:
//
// Trapperville's population is: 15
// Doggerton's population is: 230
// New Hollow's population is: 1234
// McHenry's population is: 185
Imports System.Collections
Imports System.Collections.Specialized

Class TestCollectionsUtils
    Public Shared Sub Main()
        Dim population1 As Hashtable = CollectionsUtil.CreateCaseInsensitiveHashtable()

        population1("Trapperville") = 15
        population1("Doggerton") = 230
        population1("New Hollow") = 1234
        population1("McHenry") = 185

        ' Select cities from the table using mixed case.
        Console.WriteLine("Case insensitive hashtable results:" + Environment.NewLine)
        Console.WriteLine("{0}'s population is: {1}", "Trapperville", population1("trapperville"))
        Console.WriteLine("{0}'s population is: {1}", "Doggerton", population1("DOGGERTON"))
        Console.WriteLine("{0}'s population is: {1}", "New Hollow", population1("New hoLLow"))
        Console.WriteLine("{0}'s population is: {1}", "McHenry", population1("MchenrY"))

        Dim population2 As SortedList = CollectionsUtil.CreateCaseInsensitiveSortedList()

        For Each city As String In population1.Keys
            population2.Add(city, population1(city))
        Next city

        ' Select cities from the sorted list using mixed case.
        Console.WriteLine(Environment.NewLine + "Case insensitive sorted list results:" + Environment.NewLine)
        Console.WriteLine("{0}'s population is: {1}", "Trapperville", population2("trapPeRVille"))
        Console.WriteLine("{0}'s population is: {1}", "Doggerton", population2("dOGGeRtON"))
        Console.WriteLine("{0}'s population is: {1}", "New Hollow", population2("nEW hOLLOW"))
        Console.WriteLine("{0}'s population is: {1}", "McHenry", population2("MchEnrY"))
    End Sub
End Class

' This program displays the following output to the console
'
' Case insensitive hashtable results:
'
' Trapperville's population is: 15
' Doggerton's population is: 230
' New Hollow's population is: 1234
' McHenry's population is: 185
'
' Case insensitive sorted list results:
'
' Trapperville's population is: 15
' Doggerton's population is: 230
' New Hollow's population is: 1234
' McHenry's population is: 185

Comentários

Esses métodos geram uma instância que não diferencia maiúsculas de minúsculas da coleção usando implementações que não diferenciam maiúsculas de minúsculas do provedor de código hash e do comparador. A instância resultante pode ser usada como qualquer outra instância dessa classe, embora possa se comportar de forma diferente.

Por exemplo, suponha que dois objetos com as teclas "hello" e "HELLO" sejam adicionados a uma tabela de hash. Uma tabela de hash que diferencia maiúsculas de minúsculas criaria duas entradas diferentes; enquanto uma tabela de hash que não diferencia maiúsculas de minúsculas gera uma exceção ao adicionar o segundo objeto.

Construtores

Nome Description
CollectionsUtil()

Inicializa uma nova instância da classe CollectionsUtil.

Métodos

Nome Description
CreateCaseInsensitiveHashtable()

Cria uma nova instância que não diferencia maiúsculas de minúsculas da Hashtable classe com a capacidade inicial padrão.

CreateCaseInsensitiveHashtable(IDictionary)

Copia as entradas do dicionário especificado para uma nova instância que não diferencia maiúsculas de minúsculas da Hashtable classe com a mesma capacidade inicial que o número de entradas copiadas.

CreateCaseInsensitiveHashtable(Int32)

Cria uma nova instância que não diferencia maiúsculas de minúsculas da Hashtable classe com a capacidade inicial especificada.

CreateCaseInsensitiveSortedList()

Cria uma nova instância da SortedList classe que ignora o caso de cadeias de caracteres.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Acesso thread-safe

É Hashtable possível dar suporte a um gravador e a vários leitores simultaneamente. Para dar suporte a vários gravadores, todas as operações devem ser feitas por meio do wrapper retornado pelo Synchronized(Hashtable) método.

É SortedList possível dar suporte a vários leitores simultaneamente, desde que a coleção não seja modificada. Para garantir a segurança do thread, SortedListtodas as operações devem ser feitas por meio do wrapper retornado pelo Synchronized(SortedList) método.

Enumerar por meio de uma coleção não é intrinsecamente um procedimento seguro de thread. Mesmo quando uma coleção é sincronizada, outros threads ainda podem modificar a coleção, o que faz com que o enumerador gere uma exceção. Para garantir a segurança do thread durante a enumeração, você pode bloquear a coleção durante toda a enumeração ou capturar as exceções resultantes de alterações feitas por outros threads.

Confira também