Tipos de coleção classificados
A System.Collections.SortedList classe, a System.Collections.Generic.SortedList<TKey,TValue> classe genérica e a System.Collections.Generic.SortedDictionary<TKey,TValue> classe genérica são semelhantes à classe e à HashtableDictionary<TKey,TValue> classe genérica na medida em que implementam a IDictionary interface, mas mantêm seus elementos em ordem de classificação por chave e não têm a característica de inserção e recuperação O(1) das tabelas de hash. As três classes têm várias características em comum:
Todas as três classes implementam a System.Collections.IDictionary interface. As duas classes genéricas também implementam a System.Collections.Generic.IDictionary<TKey,TValue> interface genérica.
Cada elemento é um par chave/valor para fins de enumeração.
Nota
A classe não genérica SortedList retorna DictionaryEntry objetos quando enumerada, embora os dois tipos genéricos retornem KeyValuePair<TKey,TValue> objetos.
Os elementos são classificados de acordo com uma System.Collections.IComparer implementação (para não genéricos SortedList) ou uma System.Collections.Generic.IComparer<T> implementação (para as duas classes genéricas).
Cada classe fornece propriedades que retornam coleções contendo apenas as chaves ou apenas os valores.
A tabela a seguir lista algumas das diferenças entre as duas classes de lista ordenada e a SortedDictionary<TKey,TValue> classe.
SortedList Classe não genérica e SortedList<TKey,TValue> classe genérica | SortedDictionary<TKey,TValue> classe genérica |
---|---|
As propriedades que retornam chaves e valores são indexadas, permitindo uma recuperação indexada eficiente. | Nenhuma recuperação indexada. |
A recuperação é O(log n ). |
A recuperação é O(log n ). |
Inserção e remoção são geralmente O(n ), no entanto, a inserção é O(log n ) para dados que já estão em ordem de classificação, de modo que cada elemento é adicionado ao final da lista. (Isso pressupõe que um redimensionamento não é necessário.) |
Inserção e remoção são O(log n ). |
Usa menos memória do que um SortedDictionary<TKey,TValue>arquivo . | Usa mais memória do que a SortedList classe não genérica e a SortedList<TKey,TValue> classe genérica. |
Para listas ou dicionários classificados que devem ser acessíveis simultaneamente a partir de vários threads, você pode adicionar lógica de classificação a uma classe que deriva de ConcurrentDictionary<TKey,TValue>. Ao considerar a imutabilidade, os seguintes tipos imutáveis correspondentes seguem semânticas de classificação semelhantes: ImmutableSortedSet<T> e ImmutableSortedDictionary<TKey,TValue>.
Nota
Para valores que contêm suas próprias chaves (por exemplo, registros de funcionários que contêm um número de ID de funcionário), você pode criar uma coleção de chaves que tenha algumas características de uma lista e algumas características de um dicionário derivando da KeyedCollection<TKey,TItem> classe genérica.
A partir do .NET Framework 4, a classe fornece uma árvore de autobalanceamento que mantém os SortedSet<T> dados em ordem ordenada após inserções, exclusões e pesquisas. Esta classe e a classe implementam HashSet<T> a ISet<T> interface.