Coleções em C#: ArrayList, Queue, Stack, Hashtable e SortedList

Classificado em Computação

Escrito em em português com um tamanho de 4,92 KB

ArrayList

ArrayList possui capacidade inicial = 4.

Métodos:

  • Add
  • BinarySearch
  • Contains
  • Count
  • IndexOf: retorna o índice da primeira ocorrência de um objeto especificado no ArrayList.
  • Insert
  • LastIndexOf: retorna o índice da última ocorrência de um objeto especificado no array.
  • Remove: remove a primeira ocorrência.
  • RemoveAt: remove um objeto no índice especificado.
  • RemoveRange: remove determinada quantidade a partir do índice especificado.
  • Reverse: inverte a ordem dos elementos do ArrayList.
  • Sort: ordena os elementos.
  • ToArray: copia para outro ArrayList.
  • TrimToSize: altera a capacidade para a quantidade de elementos contidos atualmente.

Queue

Queue (Fila - First-in First-out).

Métodos:

  • Clear: remove tudo.
  • Contains: retorna true se tiver o elemento.
  • Count
  • Dequeue: remove e retorna o objeto do início.
  • Enqueue: adiciona objetos.
  • Peek: retorna o objeto do início sem removê-lo.

Stack

Stack (Pilha - Last-in First-out).

Métodos:

  • Clear
  • Contains
  • Count
  • Peek: retorna o elemento do topo sem removê-lo.
  • Pop: retorna e remove um elemento do topo.
  • Push: adiciona um elemento ao topo.

Iteração em Queue e Stack

Queue e Stack são classes que não podem ser iteradas como um vetor, assim como pode ser feito com ArrayLists. Portanto, só é possível iterar Queues e Stacks através do foreach.

Hashtable

Hashtable é uma estrutura do tipo Dicionário/Mapa composta por pares chave/valor (key/value).

Métodos: Add, Clear, Contains, ContainsKey, ContainsValue, Count, Remove.

Observação: somente com foreach.

foreach (DictionaryEntry x in carro)
{
    string montadora1 = (string)x.Key;
    ArrayList item = (ArrayList)x.Value;
}

SortedList

SortedList representa uma estrutura do tipo Dicionário/Mapa composta por pares chave/valor (key/value), ordenados pela chave e acessíveis tanto pela chave quanto pelo índice.

Métodos:

  • Add
  • Clear
  • Contains
  • ContainsKey
  • ContainsValue
  • Count
  • Remove
  • RemoveAt
  • GetByIndex: retorna o valor armazenado no índice especificado.
  • GetKey: retorna a chave armazenada no índice especificado.
  • IndexOfKey: retorna o índice da chave especificada.
  • IndexOfValue: retorna o índice do valor especificado.
  • SetByIndex: troca o valor armazenado no índice especificado.

Exemplo: Interseção de ArrayLists

public ArrayList Intersecao(ArrayList AL1, ArrayList AL2)
{
    ArrayList retorno = new ArrayList();

    foreach (object o in AL1)
    {
        if (AL2.Contains(o))
        {
            if (!retorno.Contains(o))
                retorno.Add(o);
        }
    }
    return retorno;
}

Exemplo: União de ArrayLists

public ArrayList Uniao(ArrayList AL1, ArrayList AL2)
{
    ArrayList retorno = new ArrayList(AL1);

    foreach (object o in AL2)
    {
        if (!retorno.Contains(o))
            retorno.Add(o);
    }
    return retorno;
}

Exemplo: Dicionário de Continentes e Países

continentes["América"].Add("Estados Unidos", 318892096);

foreach (KeyValuePair> continente in continentes)
{
    Console.WriteLine(continente.Key + " : ");

    foreach (KeyValuePair pais in continente.Value)
    {
        Console.WriteLine("Nome do país : " + pais.Key + ". População : " + pais.Value);
    }
}

Exemplo: Consulta de Sites com Hashtable

url.Add("www.gmail.com.br", "23.45.218.20");

foreach (DictionaryEntry x in url)
{
    string sites = (string)x.Key;
    string IP = (string)x.Value;

    Console.WriteLine("Digite um site: ");
    sites = Console.ReadLine();

    if (url.Contains(sites))
    {
        Console.WriteLine("Site: " + sites + "\tIP: " + IP);
    }
}

Entradas relacionadas: