Your SlideShare is downloading. ×
0
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas

1,272

Published on

Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas

Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,272
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. C#Coleções genéricas e não- genéricas Leonardo Melo Santos http://about.me/leonardomelosantos
  • 2. Conteúdo programático● Coleções não genéricas ○ Tipos mais comuns ○ Dicionários ○ Filas e pilhas● Generics ○ Características ○ Exemplos
  • 3. ColeçõesNamespace "System.Collections"Nome DescriçãoArrayList Uma simples coleção de objetos redimensionável e baseada em index.SortedList Uma coleção de pares nome/valor ordenada por chave.Queue Uma coleção de objetos First-in, First-out.Stack Uma coleção de objetos Last-in, First-out.Hashtable Uma coleção de pares de objeto nome/valor que podem ser acessados tanto por nome como por índice. Eficiente para grandes quantidades de dados.BitArray Coleção Compactas de valores Boolean.
  • 4. ColeçõesNome DescriçãoStringCollection Simples coleção redimensionável de strings.StringDictonary Uma coleção de pares de strings nome/valor que podem ser acessados tanto por nome como por index.ListDictionary Uma coleção eficiente para armazenar pequenas listas de objetos.HybridDictionary Trabalha como uma ListDictionary quando o número de itens a serem armazenados é pequeno e migra para Hashtable quando o número de itens aumenta.NameValueCollection Uma coleção de pares de strings nome/valor que podem ser acessados tanto por nome como por index. Podem ser adicionados vários valores em uma mesma chave.
  • 5. Coleções - ArrayList● Classe que permite armazenar qualquer tipo de informação ○ Guarda tipos object ○ Tipos por valor causa boxing● Tamanho é flexível, aumentando quando chega ao máximo atual
  • 6. Coleções - ArrayList - Métodos● Add: Adiciona o parâmetro no fim da coleção● AddRange: Adiciona itens de outra coleção no fim desta coleção● Insert: Adiciona item em um índice indicado● InsertRange: Adiciona itens de outra coleção a partir de um índice indicado● Capacity: Número máximo de elementos do ArrayList;● Count: Número atual de elementos do ArrayList;● IndexOf: busca um objeto e retorna o índice onde ele está● Remove: Retira um objeto da lista
  • 7. Coleções - ArrayListAo trabalhar com ArrayList, cuidado com os tiposguardados. É necessário fazer conversãoArrayList colecao = new ArrayList();colecao.Add("Nome");colecao.Add(3);colecao.Add(DateTime.Now);int valor = (int) colecao[1];if( colecao.Contains("Nome") ){ colecao.Remove("Nome");}
  • 8. Iterando em coleções● Necessários para o foreach: ○ IEnumerable: GetEnumerator() ○ IEnumerator: Current() e MoveNext()IEnumerator enumerator = coll.GetEnumerator();while (enumerator.MoveNext()) { Console.WriteLine(enumerator.Current);}foreach (string item in coll) { Console.WriteLine(item);}
  • 9. Coleções sequenciais
  • 10. Coleções sequencias● Acesso sequencial aos dados ○ Queue (fila) ■ First In First Out (FIFO) ○ Stack (pilha) ■ First In Last Out (FILO)
  • 11. Classe Queue (fila)Métodos para enfileirar e tirar da fila● Enqueue: Coloca na fila● Dequeue: Tira da fila● Peek(): Em alguns casos é melhor "dar uma olhada" no item antes de acessá-lo na fila Queue q = new Queue(); q.Enqueue("First"); q.Enqueue("Second"); q.Enqueue("Third"); while (q.Count > 0) { Console.WriteLine(q.Dequeue()); }
  • 12. Classe Stack (pilha)Métodos para empilhar e desempilhar● Pop()● Push() Stack s = new Stack(); s.Push("First"); s.Push("Second"); s.Push("Third"); s.Push("Fourth"); while (s.Count > 0) { Console.WriteLine(s.Pop()); }
  • 13. Dicionários
  • 14. Um dicionário● Criado para mapear chaves a valores● Classe Hashtable trabalha com casos● simplesHashTable emailLookup = new HashTable();// Método Add recebe chave e valoremailLookup.Add("sbishop@contoso.com", "Bishop, Scott");// O indexador equivale ao método AddemailLookup["sbishop@contoso.com"] = "Bishop, Scott";
  • 15. Iterando um dicionário● Deve-se acessar valor ou chave● Cada item é um DictionaryEntry● Propriedade Value● Propriedade Keyforeach (DictionaryEntry elemento in emailLookup){ Console.WriteLine(elemento.Value);}
  • 16. Generics
  • 17. Generics x sem genericsGenerics● Permite que classes, structs, interfaces, delegates e métodos sejam parametrizados pelos tipos de dados que guardam e manipulamSem generics● Uso de object para generalização● Constante necessidade de Boxing e Unboxing● Constante necessidade de casts
  • 18. Generics
  • 19. GenericsPor que usar Generics?● Type checking, sem boxing, sem downcasts● Reduz a quantidade de código● Implementação de Generics funciona para tipos por valor e por referência
  • 20. GenericsTambém podem ser usados em métodos
  • 21. Exercícios1. Alimentar uma coleção não-genérica usando o tipo ArrayList, que armazenará objetos de diferentes tipos. Em seguida varrer a lista e escrever no Console o resultado do método ToString() de cada elemento.2. Alimentar uma lista genérica usando o tipo List<>, que armazenará objetos do tipo de uma classe criada por você. Em seguida, varrer a lista e mostrar algum dado do elemento na tela. (ConsoleApplication)3. Alimentar uma coleção genérica usando o tipo KeyValuePair<>, onde será indexada por um número e armazenará objetos do tipo de uma classe criada por você. Em seguida, varrer a lista e mostrar algum dado do elemento na tela. (ConsoleApplication)
  • 22. Dúvidas

×