.NET – POO – C# .NET
.NET – POO – C# .NET
• Objetivo• Visão Geral • Usando Listas Sequenciais• Usando Dicionários• Usando Coleções Genéricas• Conclusão
Capacitar o aluno no uso recursos da API de Coleções e
Generics oferecidos pela plataforma .NET.
• Os desenvolvedors necessitam de armazenar grupos de objetos
relacionados.
• Um mensagem de e-mail pode conter, por exemplo, um conjunto de
contatos.
• O .NET Framework provê o namespace System.Collections para permitir
ao desenvolvedor gerenciar grupos de objetos.
• Diferentes coleções podem prover benefícios de peformance em
diferentes cenários, como:
• Capabilidade de ordenações flexíveis;
• Suporte para diferentes tipos de dados; e
• Dicionários com par de chaves e valores.
• Um coleção é qualquer classe que permite armazenar itens em lista e
para interar com os itens contidos.
• O .NET Framework inclui as seguintes classes de coleções:
o ArrayList - coleção simples que permite armazenar qualquer tipo de
objeto;
o Queue - Implementa o conceito de coleção do FIFO (First-In, First-
Out).
o Stack - Implementa o conceito de coleção do LIFO (Last-In, First-Out).
o StringCollection – Coleção destina o armazenamento de strings.
o BitArray - Um coleção de valores booleanos.
• ArrayList ArrayList al = new ArrayList();al.Add("Hello");al.Add("World");al.Add("this");al.Add("is");al.Add("a") ;al.Add("test");al.Remove("test");al.Insert(4, "not");al.Sort();
foreach (object s in al){ Console.WriteLine(s.ToString());}
Adiciona um item na coleçãoAdiciona um item na coleção
Remove um item da coleçãoRemove um item da coleção
Insere um item na coleçãoInsere um item na coleção
Ordena os itens de uma coleçãoOrdena os itens de uma coleção
• Queue (Fila) Queue q = new Queue();
q.Enqueue("Hello");q.Enqueue("world");q.Enqueue("just testing");
Console.WriteLine(“Demonstração de Fila: ");
for (int i = 1; i <= 3; i ++){ Console.WriteLine(q.Dequeue().ToString());}
Cria a instância de uma filaCria a instância de uma fila
Adiciona um item em uma filaAdiciona um item em uma fila
Dá acesso e remove o primeiro item da fila.Dá acesso e remove o primeiro item da fila.
• Stack (Pilha) Stack s = new Stack();
s.Push("Hello");s.Push("world");s.Push("just testing");
Console.WriteLine(“Demonstração de Pilha: ");
for (int i = 1; i <= 3; i ++){ Console.WriteLine(s.Pop().ToString());}
Cria a instância de uma pilhaCria a instância de uma pilha
• Os dicionários mapeiam chaves para valores, logo temos:
o Hashtable - Um dicionário de par de nome/valor que pode ser recuperado pelo
nome ou índice.
o SortedList - Um dicionário que é ordenado automaticamente pela chave.
o StringDictionary - Uma Hashtable com par de nome/valor implementado com
itens somente do tipo string.
o ListDictionary - Um dicionário otimizado com uma pequena lista de objetos
menor que 10 itens.
o HybridDictionary - Um dicionário que usa a classe ListDictionary para armazenar
quando o número de itens é pequeno e automaticamente muda para uma
Hastable quando a lista de itens cresce.
o NameValueCollection - Um dicionário de par de nomes/valores de strings que
permite obter o nome pelo índice.
• SortedList
SortedList sl = new SortedList();
sl.Add(“Vitor", “Meu nome é Vitor. ");sl.Add(“Igor", " Meu nome é Igor. ");sl.Add(“Jorge", “Meu nome é Jorge.");
foreach (DictionaryEntry de in sl){ Console.WriteLine(de.Value);}
Cria a instância de uma lista ordenadaCria a instância de uma lista ordenada
Adiciona um item (chave / valor) à lista ordenadaAdiciona um item (chave / valor) à lista ordenada
Permite acesso a chave e valor do itemPermite acesso a chave e valor do item
• NameValueCollection
NameValueCollection sl = new NameValueCollection();
sl.Add("Stack", "Represents a LIFO collection of objects. ");sl.Add("Stack", "A pile of pancakes. ") ;sl.Add("Queue", "Represents a FIFO collecti on of objects. ");sl.Add("Queue", "In England, a line. ") ;sl.Add("SortedList", "Represents a collection of key/value pairs.");
foreach (string s in sl.GetValues(0)){ Console.WriteLine(s);}
foreach (string s in sl.GetValues("Queue")){ Console.WriteLine(s);}
Cria a instância de coleção com “nome” e valor.Cria a instância de coleção com “nome” e valor.
Adiciona um item (chave / valor).Adiciona um item (chave / valor).
• Coleções como ArrayList, Queue, e Stack usam a classe Object
para permitir que trabalhem com qualquer tipo de objeto.
• Acessando a coleção requer que faça um cast para converter o
objeto contido na lista para o objeto final.
• Usando Generics, você pode criar coleções fortemente tipadas,
logo ajuda a:
• Simplificar o desenvolvimento;
• Assegurar os tipos apropriados; e
• Permitir aumento de perfomance pela não necessidade de cast.
• Comparação de classes de coleções que usam e não usam Generics:
• SortedList<T,U>
SortedList<string, int> sl = new SortedList<string,int>() ;
sl.Add("One", 1) ;sl.Add("Two", 2) ;sl.Add("Three", 3);
foreach (int i in sl.Values){ Console.WriteLine(i.ToString());}
• Queue<T>
Queue<Pessoa> q = new Queue<Pessoa>();
q.Enqueue(new Pessoa("Mark", "Hanson"));q.Enqueue(new Pessoa("Kim", "Akers"));q.Enqueue(new Pessoa("Zsolt", "Ambrus"));
Console.WriteLine("Queue demonstration: ");
for (int i = 1; i <= 3; i++){ Console.WriteLine(q.Dequeue().ToString());}
Cria a instância de uma filaCria a instância de uma fila
Adiciona um item em uma filaAdiciona um item em uma fila
Dá acesso e remove o primeiro item da fila.Dá acesso e remove o primeiro item da fila.
• Stack<T>
Stack<Pessoa> s = new Stack<Pessoa>();
s.Push(new Pessoa("Mark", "Hanson"));s.Push(new Pessoa("Kim", "Akers")) ;s.Push(new Pessoa ("Zsolt", "Ambrus"));
Consol e. Wri teLine("Stack demonstration: ");
for (int i = 1; i <= 3; i++){ Console.WriteLine(s.Pop().ToString());}
Cria a instância de uma pilhaCria a instância de uma pilha
• Coleções são grupos de objetos relacionados.
• ArrayList é uma simples coleção que pode armazenar qualquer
objeto e suporte sorting.
• Queue é a uma coleção FIFO.
• Stack é um coleção LIFO.
• Dictionary provê par de chave / valor sobre cincunstâncias que
requerem que você acesse os itens em array usando uma
chave.
• Quando possível, utilize coleções genéricas ao invés de
coleções que usam a classe Object como classe base, pois
oferecem maior perfomance.
.NET – POO – C# .NET