Professional Documents
Culture Documents
NET
Colees
Arrays so teis, mas tem suas limitaes. Entretanto, so a nica maneira de colecionar elementos do mesmo tipo. O .NET fornece diversas outras classes que tambm colecionam elementos de outras maneiras especializadas. As classes Collection, residem no namespace System.Collections.
Programao em C#
Colees
As classes de coleo bsicas aceitam, armazenam e retorman elementos como objetos. O tipo de elemento de uma classe coleo um objeto. Comparando um array de inteiros com um array de objetos podemos notar as diferenas.
Programao em C#
Colees
Array de inteiros
Array de objetos
stack
@
heap 0 0 0 0
stack
@
heap @ @ @ @ 7
Programao em C#
Colees
Em um array de objetos podemos adicionar valores de qualquer tipo, todos sero tratados como objetos. objetc[] array = {7, 3, 5, 9} Ao inserir um valor no array de objetos ele encaixotado (boxed) e ao retir-lo ele desencaixotado (unboxed), devemos neste caso usar um cast.
Programao em C#
ArrayList
til para misturar elementos em um array. H certas ocasies em que um array muito restritivo:
Programao em C#
ArrayList
A classe ArrayList foi feita para que todas estas dificuldades fossem superadas.
ArrayList usando o mtodo remove. A classe reordena automaticamente todos os elementos. Pode-se adicionar um elemento ao final de um ArrayList usando o mtodo Add, fornecendo o elemento a ser adicionado. O ArrayList se redimensiona, se necessrio.
Programao em C#
ArrayList
Programao em C#
ArrayList
Faa um ConsoleApplication que pea para o usurio entrar com nmeros at digitar 0.
Imprima o ArrayList. Remova o primeiro elemento cujo valor seja 7, se ele existir. //Remove Remova o 7 elemento. //RemoveAt Insira mais um elemento no final do ArrayList. Insira mais um elemento no incio do ArrayList. Insira mais um elemento no meio do ArrayList. Imprima o ArrayList. Ordene o ArrayList. //sort Imprima o ArrayList ordenado.
Programao em C#
A Classe Queue
Implementa um mecanismo FIFO. Um elemento inserido no final da fila e removido no incio da fila
using System.Collections; Queue numbers = new Queue(); numbers.Enqueue(elemento); //insere elemento na fila numbers.Dequeue(elemento); // remove
Programao em C#
10
A Classe Queue
Faa um Console Application que pea alguns nmeros para o usurio, terminando o processo com 0. Insira-os na fila um a um e imprima a mensagem na tela informando que o nmero X foi inserido na fila. Aps remova os elementos um a um informando que o nmero X deixou a fila.
Programao em C#
11
A Classe Stack
Mecanismo FILO. Um elemento colocado na parte superior da pilha e removido tambm na parte superior da pilha.
using System.Collections; Stack numbers = new Stack(); numbers.Push(elemento); //insere elemento na pilha numbers.Pop(elemento); // remove
Programao em C#
12
A Classe Queue
Faa um Console Application que pea alguns nmeros para o usurio, terminando o processo com 0. Insira-os na pilha um a um e imprima a mensagem na tela informando que o nmero X foi inserido na pilha. Aps, remova os elementos um a um informando que o nmero X deixou a pilha.
Programao em C#
13
A Classe Hashtable
Os arrays fornecem um meio de mapear um ndice inteiro para um elemento. Hashtable fornece um mapeamento onde o tipo a partir do qual voc mapear no ser um int, mas algum outro tipo qualquer. Tambm conhecido por array associativo. Internamente 2 arrays object, um para as chaves e outro para os valores, so criados.
Programao em C#
14
A Classe Hashtable
Ao inserirmos um par chave/valor podemos testar se a hashtable j contm uma chave especfica usando o mtodo ContainsKey(). Ao usarmos uma instruo foreach para iteragirmos no Hashtable, obtemos um DictionaryEntry. Esta classe fornece acesso chave e aos elementos de valor em ambos os arrays por meio da propriedade Key e Value.
Programao em C#
15
A Classe Hashtable
Programao em C#
16
A Classe SortedList
Similar Hashtable, porm mantm as chaves em ordem crescente. Faa o exemplo anterior de hashtable com sortedlist.
Programao em C#
17
Exerccio
Embaralhar, distribuir e jogar cartas. Windows Application. Podem ser usados um ArrayList para guardar as 52 cartas. Outro ArrayList para cada uma das mos. Crie uma classe baralho que contm o baralho completo, embaralha e distribui as cartas.
Programao em C#
18
Exerccio
Random random = new Random(); random.Next() % cards.Count;
Criar uma classe hand, que representa a mo de cada um dos 4 jogadores. O boto Deal s pode ser habilitado se a contagem de cartas no monte 52. Uma classe Form com o seguinte formulrio.
Programao em C#
19
Exerccio
Programao em C#
20
Exerccio
Grupos de 5 pessoas.
ArrayList com 52 cartas Global Criao das cartas Embaralhamento Distribuio Remoo Formulrio
Programao em C#
21