Anuncios

Bienvenidos sean a este post, hoy continuaremos hablando sobre las colecciones, el tema del post anterior fue la primera de ellas, en el caso de hoy veremos a las listas.

Anuncios

La clase List nos permite crear un objeto que trabaja exactamente igual que un array, es decir que nos permite almacenar varios datos en un mismo objeto con una posicion que se asigna automaticamente a medida que los agregamos pero tiene una ventaja con respecto al Array, el objeto List se incrementa y decrementa dinamicamente en base a los elementos que posee en cambio el array tiene un tamaño fijo.

Anuncios

Esto significa que nosotros al momento de crear un array debemos contemplar la posibilidad de quedarnos sin espacio para los datos, en cambio en List esto no ocurre, esto nos facilita a la hora de manejar datos que no sabemos exactamente cuantos son pero recuerden que List no es una variable y por ende no podemos asignarle informacion como un array sino que debemos hacerlo por un metodo, veamos su sintaxis para su definicion:

List <Tipo> nombreLista = new List<Tipo>();
Anuncios
Anuncios

En este caso primero va el nombre de la clase luego le diremos el tipo de dato que va a almacenar, esta puede ser string, int, float, etc., dependiendo del tipo que queremos almacenar, a continuacion ira el nombre que le asignaremos a la lista, usaremos un constructor para la clase List y el tipo debe ser exactamente al mismo que declaramos antes, veamos primero algunas de las propiedades que disponemos:

  • Capacity, setea o devuelve la cantidad de elementos que puede almacenar sin readaptarla
  • Count, devuelve la cantidad de los elementos en la lista
  • Item, setea o devuelve un elemento en el indice indicado
  • isReadOnly, devuelve un booleano si es de solo lectura o no
  • isFixedSize, devuelve un booleano si es de tamaño fijo o no
Anuncios

Pasemos a ver algunas de los metodos que disponemos:

  • Add, agregar un elemento al final de la lista
  • Clear, limpia todos los elementos de una lista
  • Contains, nos permite averiguar si la lista contiene el elemento informado
  • Exists, similar al anterior
  • Find, nos devuelve la primer coincidencia de una busqueda
  • FindAll, nos devuelve todas las coincidencias de una busqueda
  • FindLast, nos devuelve la ultima coincidencia de una busqueda
  • Insert, nos permite ingresar un elemento en la posicion especificada
  • Remove, remueve la primer coincidencia que informamos
  • RemoveAll, remueve todas las coincidencias que informamos
  • Reverse, ordena en reverso todos los elementos o una porcion de la lista
  • Sort, ordena todos o una parte de los elementos de una lista
  • ToArray, copia todos los elementos en un array.
Anuncios

Con esto comentado podemos proceder a hacer un ejemplo para ponerlo en practica, tomemos el notepad y generamos un archivo llamado listas.cs con el siguiente codigo:

listas.cs

using System;
using System.Collections.Generic;

public class Program
{
	static int Main()
	{
		List<string> lista = new List<string>();
		Console.Write("Total: " + lista.Count 
			+ " - Tamaño: " + lista.Capacity);
		Console.ReadLine();

		lista.Add("Martin Miranda");
		lista.Add("Enzo Tortore");
		lista.Add("DarkZero Aleman");
		lista.Add("Marta Gargaglione");

		Console.Write("Total: " + lista.Count 
			+ " - Tamaño: " + lista.Capacity);
		Console.ReadLine();

		lista.Clear();

		Console.Write("Total: " + lista.Count 
			+ " - Tamaño: " + lista.Capacity);
		Console.ReadLine();

		lista.Add("Martin Miranda");
		lista.Add("Enzo Tortore");
		lista.Add("DarkZero Aleman");
		lista.Add("Marta Gargaglione");
		lista.Add("Javier Marcuzzi");
		lista.Add("Ariel Polizzi");
		lista.Add("Raul Picos");

		Console.Write("Total: " + lista.Count 
			+ " - Tamaño: " + lista.Capacity);
		Console.ReadLine();

		string[] l = lista.ToArray();

		for(int i=0; i<l.Length; i++)
		{
			Console.WriteLine(l[i]);
		}
		return 0;
	}
}
Anuncios

Este es un codigo simple donde pondremos en practica varios metodos y propiedades para ver la conducta de nuestra lista veamos el primer bloque:

		List<string> lista = new List<string>();
		Console.Write("Total: " + lista.Count 
			+ " - Tamaño: " + lista.Capacity);
		Console.ReadLine();
Anuncios

En este caso vamos a crear un objeto llamado lista de tipo List y el contenido sera de tipo string, luego usaremos los metodos Count y Capacity para ver los espacios usados y disponibles, veamos como seria la salida en este caso:

Total: 0 - Tamaño: 0
Anuncios

Como creamos recien el objeto no posee ningun elemento y por ende todo sera 0, veamos el siguiente bloque:

		lista.Add("Martin Miranda");
		lista.Add("Enzo Tortore");
		lista.Add("DarkZero Aleman");
		lista.Add("Marta Gargaglione");

		Console.Write("Total: " + lista.Count 
			+ " - Tamaño: " + lista.Capacity);
		Console.ReadLine();
Anuncios

En este caso usamos cuatro metodos Add para agregar cuatro nombres, luego volveremos a usar el Count y Capacity para ver el estado actual, veamos la salida:

Total: 4 - Tamaño: 4
Anuncios

Como pueden ver ahora cambiaron nuestros valores y en este caso se reflejan los cuatro elementos que agregamos tanto para un metodo como el otro, veamos el siguiente bloque:

		lista.Clear();

		Console.Write("Total: " + lista.Count 
			+ " - Tamaño: " + lista.Capacity);
		Console.ReadLine();
Anuncios

Para este bloque usamos el Clear para limpiar la lista, luego mostramos nuevamente a Count y Capacity, veamos su salida:

Total: 0 - Tamaño: 4
Anuncios

En esta salida podemos ver que al borrar los elementos nuestro Count quedo en 0 pero en Capacity se mantuvo el 4, esto es debido a que el lenguaje considera que el List puede volver a retomar estos 4 elementos, por lo tanto no lo modifica reservando ese espacion en memoria, pasemos al siguiente bloque:

		lista.Add("Martin Miranda");
		lista.Add("Enzo Tortore");
		lista.Add("DarkZero Aleman");
		lista.Add("Marta Gargaglione");
		lista.Add("Javier Marcuzzi");
		lista.Add("Ariel Polizzi");
		lista.Add("Raul Picos");

		Console.Write("Total: " + lista.Count 
			+ " - Tamaño: " + lista.Capacity);
		Console.ReadLine();
Anuncios

En este bloque volvemos a agregar elementos pero ahora seran siete en lugar de cuatro, despues mostramos de nuevo los valores, veamos la salida:

Total: 7 - Tamaño: 8
Anuncios

En este caso si vemos en Count tendremos los elementos que ingresamos pero en Capacity tendremos un tamaño mas grande porque asi el lenguaje esta preparado para recibir un nuevo dato, en caso de que decidamos agregarlo, por ultimo tendremos este bloque:

		string[] l = lista.ToArray();

		for(int i=0; i<l.Length; i++)
		{
			Console.WriteLine(l[i]);
		}
Anuncios

Este bloque se encargara de usar ToArray para convertir la lista en Array, para ello declaramos un nuevo array de tipo string llamado l y le asignamos el resultado de ToArray, nuestro siguiente paso sera usar un bucle for para mostrar todos los elementos del nuevo array, vean como usamos a Length y este funcionara correctamente, su salida es la siguiente:

Martin Miranda
Enzo Tortore
DarkZero Aleman
Marta Gargaglione
Javier Marcuzzi
Ariel Polizzi
Raul Picos
Anuncios

En esta salida vemos que nos trajo todos los elementos como si fuera un array, es util para cuando necesitamos trabajarlo de esta forma, o debemos enviarlo a un metodo que no soporte listas sino solamente arrays, veamos el resultado final en el siguiente video

Anuncios

En este video podemos observar como funciono correctamente todo lo explicado anteriormente.

Anuncios

En resumen, hoy hemos visto a List, para que es, como se usa, como lo podemos usar, algunos metodos disponibles, algunas propiedades disponibles, un ejemplo donde vimos como crearlo, como agregar elementos, como modifica a la lista, como modifica el limpiarla, y finalmente como convertirla en un array, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

1.00 $