You are on page 1of 19

.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"); Adiciona um item na coleção
al.Add("World");
al.Add("this");
al.Add("is");
al.Add("a") ;
al.Add("test");
al.Remove("test"); Remove um item da coleção
al.Insert(4, "not");
al.Sort();
Insere um item na coleção
foreach (object s in al)
{ Ordena os itens de uma coleção
    Console.WriteLine(s.ToString());
}
• Queue (Fila)
 
Queue q = new Queue(); Cria a instância de uma fila
q.Enqueue("Hello"); Adiciona um item em uma fila
q.Enqueue("world");
q.Enqueue("just testing"); Dá acesso e remove o
primeiro item da fila.
Console.WriteLine(“Demonstração de Fila: ");

for (int i = 1; i <= 3; i ++)


{
    Console.WriteLine(q.Dequeue().ToString());
}
• Stack (Pilha)
 
Stack s = new Stack();
Cria a instância de uma pilha
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());
}
• 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(); Cria a instância de uma lista


ordenada
sl.Add(“Vitor", “Meu nome é Vitor. ");
sl.Add(“Igor", " Meu nome é Igor. "); Adiciona um item (chave /
sl.Add(“Jorge", “Meu nome é Jorge.");
valor) à lista ordenada
foreach (DictionaryEntry de in sl)
{
Permite acesso a chave e
    Console.WriteLine(de.Value);
} 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)) Cria a instância de coleção


{
    Console.WriteLine(s); com “nome” e valor.
}

foreach (string s in sl.GetValues("Queue"))


{ Adiciona um item (chave /
    Console.WriteLine(s); 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> Cria a instância de uma fila
Queue<Pessoa> q = new Queue<Pessoa>(); Adiciona um item em
q.Enqueue(new Pessoa("Mark", "Hanson")); uma fila
q.Enqueue(new Pessoa("Kim", "Akers"));
q.Enqueue(new Pessoa("Zsolt", "Ambrus")); Dá acesso e remove o
primeiro item da fila.
Console.WriteLine("Queue demonstration: ");

for (int i = 1; i <= 3; i++)


{
    Console.WriteLine(q.Dequeue().ToString());
}
• Stack<T>
Cria a instância de uma pilha
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());
}
• 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

You might also like