Posteado por: fzapataramirez | Sábado, agosto 23, 2008

Colecciones de datos en C#.NET (Parte II: ArrayList)

Esta es una clase que representa una lista de datos. Es bastante parecida a la colección explicada anteriormente, con la diferencia que el ArrayList puede aumentar o disminuir su tamaño dinámicamente de una manera eficiente.

Con un array de datos no era posible aumentar la capacidad del vector ya que dicho parámetro es especificado en el momento de crear la instancia del objeto. El ArrayList a diferencia, brinda la posibilidad de aumentar o disminuir su tamaño dinámicamente según sea necesario.

Para crear una instancia de este objeto, se debe utilizar la clase ArrayList incluida en el espacio de nombre System.Collections como se muestra a continuación.

ArrayList arrayList=new ArrayList();

El constructor de la clase ArrayList acepta también un parámetro tipo entero que indica la capacidad inicial del objeto que se esta creando.

Si es necesario agregar un objeto a la colección, se debe utilizar el método Add, el cual inserta el nuevo elemento en la última posición, o el método Insert el cual lo inserta en la posición indicada.

image

Todos los objetos almacenados en un Arraylist son tratados como objetos, por lo tanto es posible agregar todo tipo de datos, es decir, se puede agregar enteros, cadenas de texto, objetos de clases propias, etc. Y a diferencia de los array vistos en la parte I, no todos los elementos deben ser del mismo tipo de dato. Esto en algunas ocasiones puede ser una ventaja ya que permite almacenar gran variedad de información en una sola colección, sin embargo, por razones de rendimiento (cast, boxing, unboxing), hay ocasiones en las que es preferible utilizar las colecciones genéricas que serán tratadas mas adelante.

Si es necesario quitar elementos de la colección, se debe usar el método remove, removeAt o RemoveRange, los cuales eliminan el objeto pasado como parámetro, o un elemento en una posición especifica, o un grupo de elementos respectivamente.

Las propiedades mas utilizadas de esta colección son : Count y Capacity. La primera sirve para conocer la cantidad actual de elementos que contiene la colección. La segunda indica la capacidad máxima actual de la colección para almacenar elementos. Es necesario tener presente que la capacidad de la colección, aumenta en caso de ser necesario al insertar un elemento, con lo que se garantiza el redimensionamiento automático.

La capacidad de una colección nunca podrá ser menor a la cantidad total de elementos contenidos, por lo que si se modifica manualmente la propiedad Capacity y se le asigna un valor menor que el valor devuelto por la propiedad Count, obtendremos una excepción de tipo ArgumentOutOfRangeExcepetion .

A continuación se muestra un ejemplo del uso de estas propiedades:

image

image

Para acceder a los elementos contenidos por la colección se puede hacer mediante el uso de índices o mediante la instrucción foreach.

image

Determinar que tipo de colección usar en un caso especifico, es tarea del desarrollado y se debe evaluar las condiciones para determinar la manera mas eficiente de administrar los recursos. Si es un escenario donde no conocemos el tamaño que tendrá la colección y si además será muy probable que el tamaño varíe, entonces será recomendable bajo todas las demás circunstancias usar un ArrayList en lugar de un array debido a que el ArrayList brinda la posibilidad de redimensionarlo automáticamente. Sin embargo, para escenarios donde se conoce de antemano la cantidad total de elementos a almacenar y si todos son del mismo tipo, se debe usar el array convencional ya que los objetos son almacenados en su tipo de datos nativo y no es necesario hacer conversiones.


Responses

  1. […] presenta ésta colección frente a las colecciones mencionadas anteriormente (Parte I: Vectores, Parte II: ArrayList, Parte III: Stack y Queue), es el poco tiempo que tarda en realizar la búsqueda de un elemento […]

  2. =)

  3. Excelente, me sirve mucho esta informacion…
    Gracias!!!!

  4. Gracias, necesitaba saber cómo recorrer un Arraylist con un for usando índices😀

  5. Explicacion muy concreta, con ejemplo sencillo y muy practica !!! Apenas estoy volviendo a programar despues de un rato y de verdad me sacaste de un apuro porque estoy muy limitado de tiempo para hacer un programa que me han pedido. MIL GRACIAS !!!! Ojala mi agradecimiento te llegue convertido en algo que necesites !!!!!

  6. muy buena explicacion, me sirvio. ahora una pregunta, si no fuese de tipo string, si fuese un objeto, como lo recorrerias con un for? como se castearia?


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: