Stack – Esta classe permite a inclusão de elementos que são colocados em uma pilha. O elemento junta-se à pilha no topo e sai dela também a partir do topo. A Stack usa o sistema LIFO (last-in first-out), ou seja, “último a entrar, primeiro a sair”. Seus principais métodos são:
· Push – Coloca um item na pilha;
· Pop – Retira o último item da pilha e retorna uma referência a este objeto;
· Peek – Retorna o objeto que está no topo da pilha.
Veja um exemplo prático com o uso da classe Stack:
Stack objPilha = new Stack();
objPilha.Push("Item 1");
objPilha.Push("Item 2");
objPilha.Push("Item 3");
//Item 2
string ultimoItem = objPilha.Pop().ToString();
//Item 1
ultimoItem = objPilha.Pop();
Queue – Nesta classe, o elemento é inserido na parte de trás da fila. Esta operação é chamada de enfileiramento. Este mesmo elemento sai a partir da frente da fila, operação chamada de desenfileiramento. Esse procedimento de entrada e saída recebe o nome de fila, ou FIFO (first-in first-out), ou seja, “primeiro a entrar, primeiro a sair”. Seus métodos principais são:
· Enqueue – Coloca um item na fila;
· Dequeue – Retira o primeiro item da fila e retorna uma referência;
· Peek – Retorna o primeiro item.
Veja um exemplo:
Queue objFila = new Queue();
objFila.Enqueue("A");
objFila.Enqueue("B");
objFila.Enqueue("Item 3");
string primeiroItem = objFila.Peek().ToString();
primeiroItem = objFila.Dequeue().ToString();
primeiroItem = objFila.Dequeue().ToString();
primeiroItem = objFila.Dequeue().ToString();
HashTable – Esta classe permite fazer o que é geralmente denominado de array associativo, ou seja, mapear para um elemento um tipo diferente do inteiro(int), como time, double ou até string. O mapeamento de um índice de inteiro para um elemento é uma capacidade oferecida tanto pelo Array como pelo ArrayList.
A classe HashTable aceita o uso do Foreach para o trabalho de iteração desta classe. Quando isso é feito, uma classe DictionaryEntry é retornada. Por meio dela, podemos usar as propriedades Value e Key a fim de acessar os elementos de valor e de chave em qualquer um dos dois arrays de objeto mantido internamente pelo HashTable.
Seus principais métodos são:
· Add – Adiciona um item. Deve-se passar como parâmetro uma chave e seu valor. Tanto a chave como o valor podem ser objetos de qualquer tipo;
· ContainsKey – Retorna true se o HashTable contém uma chave específica;
· ContainsValue – Retorna true se o HashTable contém um valor específico.
A principal propriedade é:
· Item – Esta é a propriedade default e retorna um elemento da coleção do tipo Dictionary Entry.
A classe Dictionary Entry tem duas propriedades que vale o destaque:
· Key – A chave para localização do item na coleção.
· Value – O valor do item.
Veja o exemplo a seguir usando HashTable:
Hashtable objTabela = new Hashtable();
objTabela.Add(1, "Joãozinho");
objTabela.Add(2, "Mariazinha");
foreach (DictionaryEntry item in objTabela)
{
Listbox1.Items.Add(item.Key + ":" + item.Value);
}
if (objTabela.ContainsKey(1))
{
Listbox1.Items.Add(objTabela[1]);
}
if (objTabela.ContainsValue("Joaõzinho"))
{
Listbox1.Items.Add("Joaõzinho foi encontrado!");
}
Perceba que usamos um exemplo fictício, onde um determinado ListBox será preenchido com os dados do HashTable.
Deixo como dica a vocês que pesquisem mais sobre Coleções e façam exemplos práticos com os tipos apresentados aqui.
Fonte de Consulta: Apostila de C#, da Impacta Tecnologia.
Assim finalizo o artigo. Muito obrigado a todos!
Um abraço, e até o próximo artigo.
Wellington Balbo de Camargo