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

 
Lección 4 – Usando colecciones especializadas


Son colecciones con propósitos muy específicos. Se encuentran en un namespace System.Collections.Specialized
 
Trabajando con bits
.Net framework trabaja con 2 colecciones de bita: BitArray y BitVector32
BitArray es una colección de tamaño variable (pero no dinamica) que puede almacenar valores lógicos (bool). Soporta operaciones a nivel de bits como and, not, or, Xor (o exclusivo).
BitVector32 ayuda a manipular bits en un integers de 32 bits. No es dinámico (no varía su tamaño), es de 32 bits así que puede manipular integers de 32 bits de forma individual.
 

Como usar un BitArray
Cuando se crea una instancia de la clase BitArray, se debe especificar su tamaño. Despues de creada, se puede cambiar de tamaño mediante la propiedad length.
No soporta add y remove.
Es importante cuando se quieren realizar operaciones lógicas. Ejemplo
image
 
Como usar BitVector32
La estructura BitVector32 es usado para manejar de manera individual bits de un numero largo, un entero de 32 bits. Fue diseñada para simplificar el uso de binarios como un bit individual de información. Tiene un método estático llamado CreateMask que es secuencial.
Si se llama sin parámetros, se crea la máscara para la primera estructura y llamándola secuencialmente con el último bit al que se le hizo las mascara, se va suplantando por la del próximo bit.
image
 
Como usar un BitVector32 para un paquete de bits
Esta estructura permite usar toda su capacidad para almacenar varios números pequeños y ahorrar espacio. Crear secciones que serán usadas para almacenar números de un cierto tamaño.
Entonces para almacenar valores se puede usar
image
Y para mostrarlos
image
 
Coleccionando strings

Clase StringCollection
Es una colección dinámica de tamaño cambiante, que solo almacena strings y su uso es igual al de un ArrayList:
image
 
Clase StringDictionary
Es una version de la colección diccionario fuertemente tipada, su uso es parecido al de una hashtable, salvo que tanto la llave (key) como el valor (value).
image
 
Colecciones Case-Insensitive (no sensible a mayúsculas y minúsculas)
En las colecciones se puede controlar la forma de comparar, Case-Sensitive o Case-Insensitive, usando CreateCaseInsensitiveHastable o CreateCaseInsensitiveSortedList.
image
De esta forma se toma como un mismo elemento y solo se modifica.
image
 
Colecciones de cultura invariante
La comparación es dependiente de las reglas de la cultura actual.
En muchos casos de aplicaciones web, se debería hacer que la colección no se vea afectada por la cultura. Para esto se utiliza el StringComparer, tanto para Hastable como para SortedList:
image
 
Clase NameValueCollection
Es similar a la clase StringDictionary, solo permite strings. Admite múltiples valores por key, así como también se puede buscar los elementos por índice o key.
image
Conosole.WriteLine devuelve ambos valores.
image
 
Lección 5 – Colecciones Genéricas (Generics)

Las colecciones genéricas están el namespace System.Collections.Generics, a diferencia de las colecciones normales estas pueden trabajar con un tipo de dato que le definimos cuando se la declara. Pueden usarse para crear colecciones más rápidas y type-safe que sus equivalentes no-genéricas.
Para inicializar una clase genérica se debe utilizar un parámetro adicional después del nombre de la clase, entre los caracteres “<” y “>” pasándole el tipo de datos con el que la colección deberá operar.
Ejemplo:
image
Los tipos genéricos y sus equivalentes no genéricos
imageimage
 
En general el manejo de igual al de su compañera no genérica, la única que no tiene su análoga es la clase LinkedList.
 
Clase LinkedList
La nueva clase genérica LinkedList es una colección para almacenar ítems que conocen su propia relación en la lista, y permiten iterar sin tener acceso a la colección. Es decir, que únicamente teniendo un objeto de la colección, aunque no tengamos acceso a la colección directamente, podremos iterar en ella.
  • El método AddAfter añade un item después de un item dado.
  • El método AddBefore añade un item antes de un item dado.
  • El método AddFirst añade un item al principio de la colección.
  • El método AddLast añade un item al final de la colección.
  • La propiedad First apunta al primer item de la colección.
  • La propiedad Last apunta al último item de la colección.
  • La clase LinkedList colecciona objetos LinkedListNode.
  • La propiedad List devuelve la LinkedList a la que pertenece.
  • La propiedad Next devuelve el siguiente elemento de la colección a la que pertenece.
  • La propiedad Previous devuelve elemento anterior de la colección a la que pertenece.
  • La propiedad Value obtiene el contenido del LinkedListNode.
....................................................................................................................................................
Bajar esta capítulo en formato PDF                                                                  Codigo Ejemplo
....................................................................................................................................................

No hay comentarios:

Publicar un comentario