ArrayList
Esta es una clase que representa una lista de datos. Es bastante parecida a
la colección explicada en el, con la diferencia que
el post anterior. 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.
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:
Para acceder a los elementos contenidos por la colección se puede hacer
mediante el uso de índices o mediante la instrucción foreach.
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.
DEMOSTRACIÓN
En Visual Studio vamos a dar click en menú File à New à Project
En la Ventana emergente le damos click a Window,
seleccionamos la opción “Console Application” y espacio Name colocamos el
nombre del proyecto que para el Ejemplo es “Demo 3 20483” y luego presionamos
el botón OK
hacemos el llamado al procedimiento en el método
Main() y
Cuando empezamos a correr con F11 nuestro ArrayList
empieza agregar Valores con la sentencia Add