Capítulo 4 – Colecciones y Genéricos–Parte 1

 
Lección 1- Coleccionando Ítems de datos
Las colecciones de datos son algunas de las herramientas más utilizadas a la hora de desarrollar una aplicación ya que nos permiten manipular información en memoria de una manera fácil y flexible.

Tipos de colecciones
Clase Descripción
ArrayList Una colección de objetos simples, basada en índices, su tamaño aumenta dinámicamente según se requiera.
BitArray Administra una matriz compacta de valores de bit que se representan como valores booleanos, donde true indica que el bit está activado (1) y false indica que el bit está desactivado (0).
Hashtable Es una colección de pares de clave y valor organizados en función del código hash de la clave.
Queue Representa una colección de objetos de tipo "primero en entrar, primero en salir".
SortedList Representa una colección de pares de clave y valor ordenados por claves a los que se puede tener acceso por clave y por índice.
Stack Es una colección sencilla de objetos no genéricos LIFO ("último en entrar, primero en salir").
StringCollection Una colección de strings que aumenta su tamaño dinámicamente.
StringDictionary Colección de pares de nombres y valores de strings , que permiten ser recuperadas pasando el nombre o el índice.

La clase ArrayList es la más simple de las colecciones. Esta es una clase que representa una lista de datos (de cualquier tipo) que puede aumentar o disminuir su tamaño dinámicamente de una manera eficiente.
Para crear una instancia de este objeto, se debe utilizar la clase ArrayList incluida en el espacio de nombre System.Collections.
clip_image001




Agregando y removiendo Items
Para agregar un objeto se realiza mediante el método Add (inserta el nuevo elemento en la última posición), AddRange(pasándole un array de elementos), el método Insert (inserta en la posición indicada) o el InsertRange (se en lugar donde inserta los elementos y el array de elementos).
clip_image002
Agregando mediante AddRange:
clip_image003
Usando insert:
clip_image004
Para quitar elementos de la colección, se debe usar el método remove (pasando el elemento), removeAt(una posicion) o RemoveRange (el índice de donde se debe comenzar y la cantidad de elementos a borrar).
clip_image005
clip_image006
Las propiedades más utilizadas son: Count (para conocer la cantidad actual de elementos que contiene la colección) y Capacity (segunda indica la capacidad máxima actual de la colección para almacenar elementos.
La capacidad de la colección aumenta en caso de ser necesario cuando insertamos un elemento, se realiza un redimensionamiento automático.
Para copiar un ArrayList, se puede realizar mediante CopyTo()
clip_image007
 
Ordenando elementos
El método Sort es un método usado para ordenar los ítems de una colección (implementa la interface Icomparer, que solo tiene el método llamado Compare y este realiza comparaciones de cadenas en las que no se distingue entre mayúsculas y minúsculas)
clip_image008
 
Iterando a través de los elementos
Tanto los arraylist como las otras colecciones de este capítulo, soportan varias formas de iterar por su contenido.
clip_image009
Otra forma:
clip_image010
La clase ArrayList implementa la interface IEnumerator e IEnumerable. Podemos crear un IEnumerator asignándole el arreglo.GetEnumerator y manejarnos por este con todos los métodos que brinda la interfase IEnumerator.
clip_image011
 
Lección 2- trabajando con listas secuenciales

Las listas secuenciales son colecciones que deben ser tratadas de una forma metódica y usadas cuando nos interesa tener control sobre el orden en que los elementos son obtenidos de las mismas.
Las clases Cola (Queue) y Pila (stack) son usadas para almacenar datos de forma secuencial.
 
Clase Cola
Es una clase FIFO (primero en entrar, primero en salir, en inglés First Input First Output). Este comportamiento se puede asociar la Queue con la fila que se debe hacer en un supermercado cuando tenemos que pagar nuestros productos. En ese caso, el cajero atiende en el orden en que llegan las personas a la cola.
Ejemplo de manejo de una cola:
clip_image012
 
Clase Pila
La pila (Stack), es una colección LIFO (Last Input Fisrt Output, el ultimo que entre es el primero que sale) . Es parecido a una “pila” de platos en donde cada plato esta encima del otro y en caso de querer ingresar un plato a la pila, lo que se debe hacer es ponerlo encima del ultimo plato. Luego cuando se quiere sacar un plato de la pila, solo podemos coger el último plato.
Ejemplo de manejo de una pila:
clip_image013
 

Lección 3- Trabajando con diccionarios

Los diccionarios son una colección que permite almacenar pares de objetos, donde el primero es una llave (key) que debe ser único y el segundo es su valor (value).
Usando un diccionario

Para los casos básicos se usa un HashTable, que es un tipo específico de diccionario.
Los diccionarios sirven para colecciones pequeñas, en cambio los hashtable sirven para cuando la colección es grande.
clip_image014
Utilizando la sintaxis “[key]” (por ejemplo: tabla ["llave"]), es posible actualizar el valor contenido o si no existe en la tabla, se inserta este nuevo elemento.
clip_image015
Para iterar sobre un hashtable o dictionary, se puede hacer de la siguiente forma:
clip_image016
La clase Hashtable soporta un constructor que acepta un argumento de IEqualityComparer, este permite comparar clases usando el modo CaseInsensitiveComparer (no tiene en cuenta las mayúsculas y minúsculas).
clip_image017
Por lo tanto si escribimos Tabla["Algo"]= “Valor”; es lo mismo que Tabla["algo"]= “Valor”;
Métodos más utilizados:
Add permite agregar un nuevo par llave/valor a la colección.
Remove permite quitar un par llave/valor de la colección
Clear permite borrar todos los ítems de la tabla.
ContainsKey permite saber si la colección contiene un par cuya clave sea la que se le pasa como parámetro.
ContainsValue permite saber si la colección contiene un par cuyo valor sea el que se le pasa como parámetro.
 
Usando la clase SortedList
La clase SortedList es un tipo de la clase diccionario que tiene pares de clave y valor ordenados por claves, su manejo es similar al de un diccionario.
clip_image018
Por lo tanto al mostrar por pantalla se va a obtener:
clip_image019
 
Diccionarios especializados:
ListDictionary: Funciona de la misma forma que un Hashtable, solamente que más eficiente para pocos datos, ya que Hashtable causa mucho overhead.
HibrydDictionary: es para cuando uno no conoce el tamaño de su arreglo y desea hacerlo de forma eficiente. Para gran volumen de datos se comporta como un Hashtable y para pocos como un ListDictionary.
OrderedDictionary: es como un HashTable pero ordenado, y de una forma particular que uno desee.
Tiene como propiedades: Item, para acceder a cierto índice.
Y como métodos Insert, para insertar en cierto índice un key/value. RemoveAt, remover tal elemento en tal índice.

 ....................................................................................................................................................
2da parte >> 
.....................................................................................................................................................

No hay comentarios:

Publicar un comentario