24 mayo, 2007

Colecciones de datos

Todos los desarrolladores hemos tenido la necesidad de utilizar listas de datos, muchos solo hacen uso de los arreglos, sin embargo el dot net Framework nos proporciona una buena cantidad de listas especializadas, según el tipo de información que queramos manejar. Entonces el principal problema es determinar cuál es la lista más adecuada para el tipo de datos que queremos manejar. Conozcamos un poco las colecciones que encontramos en system.collections

Colección

Descripción

ArrayList

Almacena una lista de objetos

SortedList

Almacena una lista de objetos pero ordenados

Queue

Almacena una lista de objetos pero con la restricción de que el primer objeto en entrar es el primero en salir

Stack

Almacena una lista de objetos pero con la restricción de que el último objeto en entrar es el primero en salir

Hashtable

Almacena una colección de pares de valores, una llave y un valor.

SortedList

Almacena una colección de pares de valores, una llave y un valor, pero a diferencia de hashtable, los almacena de manera ordenada.

ListDiccionary

Tiene la misma funcionalidad del Hashtable, solo que optimizado para colecciones pequeñas (con pocos elementos)

HybridDiccionary

Esta colección se comporta como un ListDictionary cuando tiene pocos elementos, pero si la colección crece, toma el comportamiento del hashtable.

OrderedDictionary

Es muy similar al hashtable, pero agrega la funcionalidad necesaria para poder acceder a los elementos mediante un índice.

StringCollection

Es muy similar al ArrayList pero para manejar colecciones de string exclusivamente.

StringDiccionary

Es muy similar al Hashtable pero para manejar colecciones de string, tanto la llave como el valor tienen que ser string.

Las colecciones anteriormente citadas (a excepción de StringCollection y StringDiccionary) usan object como elementos, esto permite una gran confiabilidad pero no es lo mejor tomando en cuenta confiabilidad y el rendimiento. Cuando requiere de mejor rendimiento o mayor estabilidad de la aplicación (mediante la validación de tipos), el framework nos proporciona una serie de colecciones equivalentes a las anteriormente citadas, estas son llamadas colecciones genéricas (generic collection), y tienen la particularidad de comportarse igual que las anteriores pero con la particularidad que podemos definirle el tipo de dato que vamos a almacenar, ya no nos vemos obligados a usar el tipo "object".

El funcionamiento de estas colecciones es tan similar a las anteriormente vistas que existe una tabla de equivalencias, en la siguiente tabla podemos ver a la izquierda las colecciones que ya conocemos, pero cuando necesitemos trabajar con colecciones de un tipo de dato definido debemos usar el equivalente de la derecha, veamos:

Colección

Colección genérica

ArrayList

List

Queue

Queue

Stack

Stack

Hashtable

Dictionary

SortedList

SortedList

ListDictionary

Dictionary

HybridDictionary

Dictionary

OrderedDictionary

Dictionary

SortedDictionary

SortedDictionary

NameValueCollection

Dictionary

DictionaryEntry

KeyValuePair

StringCollection

List

StringDictionary

Dictionary

En futuros post espero poder mostrarles el funcionamiento de la mayoría de las colecciones.

1 comentario:

Anónimo dijo...

Excelente las definiciones!! :D
me pregunto algo de casualidad tienes algunas demos pero aplicando ADO.Net a todas esas colecciones?? si las tuvieras serias tan amable de enviarmelas ami correo:
ba_jorge_r@hotmail.com

O tal vz si tienes algunos links donde se apliquen y si tienes en VB.Net mucho mejor pero si es en C# no hay problema,gracias doc.. :D

Salu2
Jorge R.