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

19
.NET – POO – C# .NET

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

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

.NET – POO – C# .NET

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

• Objetivo• Visão Geral • Usando Listas Sequenciais• Usando Dicionários• Usando Coleções Genéricas• Conclusão

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

Capacitar o aluno no uso recursos da API de Coleções e

Generics oferecidos pela plataforma .NET.

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

• 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.

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

• 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.

Page 6: .NET - POO - C# .NET - Aula 04 - Coleções e Generics
Page 7: .NET - POO - C# .NET - Aula 04 - Coleções e Generics

• 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

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

• 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.

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

• 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

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

• 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.

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

• 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

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

• 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).

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

• 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.

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

• Comparação de classes de coleções que usam e não usam Generics:

Page 15: .NET - POO - C# .NET - Aula 04 - Coleções e 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());}

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

• 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.

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

• 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

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

• 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.

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

.NET – POO – C# .NET