Compartilhar via


Tipos de coleção Sorted

A classe System.Collections.SortedList, a classe genérica System.Collections.Generic.SortedList<TKey,TValue> e a classe genérica System.Collections.Generic.SortedDictionary<TKey,TValue> são semelhantes à classe Hashtable e à classe genérica Dictionary<TKey,TValue>, pois elas implementam a interface IDictionary, mas mantêm seus elementos em ordem de classificação por chave e não têm a inserção de O(1) nem a característica de recuperação das tabelas de hash. As três classes têm várias funcionalidades em comum:

A tabela a seguir lista algumas das diferenças entre as duas classes de listas classificadas e a classe SortedDictionary<TKey,TValue>.

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. Recuperação não indexada.
A recuperação é O(log n). A recuperação é O(log n).
A inserção e a 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 forma que cada elemento seja adicionado ao final da lista. (Isso pressupõe que um redimensionamento não é necessário.) A inserção e a remoção são O(log n).
Usa menos memória do que um SortedDictionary<TKey,TValue>. Usa mais memória do que a classe não genérica SortedList e a classe genérica SortedList<TKey,TValue>.

Para listas ou dicionários classificados que precisam estar acessíveis simultaneamente em vários threads, você pode adicionar a lógica de classificação a uma classe derivada de ConcurrentDictionary<TKey,TValue>. Ao considerar a imutabilidade, os seguintes tipos imutáveis correspondentes seguem uma semântica de classificação semelhante: ImmutableSortedSet<T> e ImmutableSortedDictionary<TKey,TValue>.

Observação

Para valores que contêm suas próprias chaves (por exemplo, registros de funcionários que contêm um número de ID do funcionário), você pode criar uma coleção com chave que tem algumas características de uma lista e algumas características de um dicionário, derivando da classe genérica KeyedCollection<TKey,TItem>.

A partir do .NET Framework 4, a classe SortedSet<T> fornece uma árvore de balanceamento automático que mantém os dados na ordem classificada após inserções, exclusões e pesquisas. Essa classe e a classe HashSet<T> implementam a interface ISet<T>.

Confira também