Coleções

Coleções são estruturas fundamentais em C# para armazenar, organizar e manipular grupos de objetos de forma eficiente. Elas tornam possível trabalhar com conjuntos de dados de tamanhos e estruturas variadas, facilitando operações como busca, inserção, remoção e ordenação.

Principais Tipos de Coleções em C#

1. List<T>

A List<T> é uma coleção genérica que armazena elementos do mesmo tipo em ordem e permite acesso por índice. O seu tamanho é dinâmico, podendo crescer ou diminuir conforme a necessidade.

Exemplo:

using System.Collections.Generic;

List<int> numeros = new List<int>();
numeros.Add(10);
numeros.Add(20);
numeros.Add(30);

foreach (int n in numeros)
{
Console.WriteLine(n);
}
numeros.Remove(20); // Remove o valor 20
Console.WriteLine(numeros.Count); // Exibe 2

Podemos aceder elementos pelo índice (numeros) e utilizar métodos como Add, Remove, Contains e Clear.

2. Dictionary<TKey, TValue>

O Dictionary<TKey, TValue> armazena pares chave-valor, permitindo buscas rápidas por chave. As chaves devem ser únicas e podem ser de qualquer tipo, assim como os valores.

Exemplo:

using System.Collections.Generic;

Dictionary<string, int> idades = new Dictionary<string, int>();
idades.Add("Ana", 25);
idades["Bruno"] = 30;

foreach (KeyValuePair<string, int> par in idades)
{
Console.WriteLine($"{par.Key}: {par.Value}");
}
idades.Remove("Ana");

É ideal para associar informações, como nomes a idades ou códigos a produtos.

3. Outras Coleções Comuns

  • Queue<T>: Estrutura de fila (FIFO), onde o primeiro a entrar é o primeiro a sair.
  • Stack<T>: Estrutura de pilha (LIFO), onde o último a entrar é o primeiro a sair.
  • HashSet<T>: Coleção de elementos únicos, sem ordem específica.
  • ListDictionary: Uma implementação leve de dicionário para pequenas quantidades de dados (menos de 10 itens).

Arrays vs Coleções

  • Arrays têm tamanho fixo e são ideais para dados de tamanho conhecido.
  • Coleções como List<T> e Dictionary<TKey, TValue> são dinâmicas e oferecem métodos avançados para manipulação de dados.

Boas Práticas

  • Prefira coleções genéricas (List<T>, Dictionary<TKey, TValue>) para maior segurança de tipo e desempenho.
  • Escolha a coleção adequada conforme a necessidade: listas para sequências ordenadas, dicionários para associação chave-valor, filas e pilhas para processamento sequencial.