.NET - POO - C# .NET - Aula 04 - Coleções e Generics

Post on 14-Oct-2014

309 views 2 download

description

Nesta apresentação o aluno terá oportunidade de conhecer os recursos da podera API de coleções de .NET, bem como utilizar coleções que se baseiam no uso de tipos genéricos.

Transcript of .NET - POO - C# .NET - Aula 04 - Coleções e Generics

.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