Tipos de coleção usados com frequência
Os tipos de coleção representam diferentes maneiras de coletar dados, como tabelas de hash, filas, pilhas, recipientes, dicionários e listas.
Todas as coleções são baseadas de forma direta ou indireta nas interfaces ICollection ou ICollection<T>. IList e IDictionary seus equivalentes genéricos derivam dessas duas interfaces.
Em coleções baseadas em IList ou diretamente em ICollection, cada elemento contém apenas um valor. Esses tipos incluem:
Em coleções baseadas na interface IDictionary, cada elemento contém uma chave e um valor. Esses tipos incluem:
- Hashtable
- SortedList
- SortedList<TKey,TValue>
- Dictionary<TKey,TValue>
- ConcurrentDictionary<TKey,TValue>
A classe KeyedCollection<TKey,TItem> é exclusiva, pois ela é uma lista de valores com chaves incorporadas aos valores. Como resultado, ela se comporta como uma lista e como um dicionário.
Quando você precisar de acesso à coleção com multithread eficiente, use as coleções genéricas no namespace System.Collections.Concurrent.
As classes Queue e Queue<T> fornecem listas do tipo primeiro a entrar, primeiro a sair. As classes Stack e Stack<T> fornecem listas do tipo último a entrar, primeiro a sair.
Tipagem forte
Coleções genéricas são a melhor solução para tipagem forte. Por exemplo, adicionar um elemento de qualquer tipo diferente de um Int32 a uma coleção List<Int32>
causa um erro em tempo de compilação. No entanto, se o idioma não oferecer suporte a genéricos, o namespace System.Collections incluirá classes base abstratas que você pode estender para criar classes de coleção que são fortemente tipadas. Essas classes base incluem:
Como coleções variam
As coleções variam em como armazenam, classificam e comparam elementos e como executam pesquisas.
A classe SortedList e a classe genérica SortedList<TKey,TValue> fornecem versões classificadas da classe Hashtable e da classe genérica Dictionary<TKey,TValue>.
Todas as coleções usam índices baseados em zero, exceto Array, a qual permite matrizes que não sejam baseadas em zero.
Você pode acessar os elementos de um SortedList ou um KeyedCollection<TKey,TItem> pela chave ou pelo índice do elemento. Somente é possível os elementos de um Hashtable ou um Dictionary<TKey,TValue> pela chave do elemento.
Usar LINQ com tipos de coleção
O recurso LINQ to Objects fornece um padrão comum para acessar objetos na memória de qualquer tipo que implemente IEnumerable ou IEnumerable<T>. As consultas LINQ têm vários benefícios em relação a constructos padrão, como loops foreach
:
- Elas são concisas e fáceis de entender.
- Elas podem filtrar, ordenar e agrupar dados.
- Elas podem melhorar o desempenho.
Para obter mais informações, confira LINQ to Objects (C#), LINQ to Objects (Visual Basic) e PLINQ (Parallel LINQ).
Tópicos relacionados
Título | Descrição |
---|---|
Coleções e Estruturas de Dados | Discute os diversos tipos de coleção disponíveis no .NET, incluindo pilhas, filas, listas, matrizes e dicionários. |
Tipos de Coleção de Tabela de Hash e Dicionário | Descreve os recursos de tipos de dicionário baseados em hash genérico e não genérico. |
Tipos de Coleção Sorted | Descreve as classes que fornecem funcionalidade de classificação para listas e conjuntos. |
Genéricos | Descreve o recurso Genéricos, incluindo coleções, delegados e interfaces genéricos fornecidos pelo .NET. Fornece links à documentação de recursos para C#, Visual Basic e Visual C++ e para oferecer suporte a tecnologias, tais como a de reflexão. |
Referência
System.Collections.ICollection
System.Collections.Generic.ICollection<T>
System.Collections.Generic.IList<T>