Olá pessoal, neste artigo veremos conceitos e exemplos com as classes Stack, Queue e HashTable. Acompanhem:

 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

 wellingtonbalbo@gmail.com