Colección List<T>

Definición

Las colecciones de clases de C# son un conjunto de clases diseñadas específicamente para agrupar objetos y llevar a cabo tareas con ellos.

 

Una ventaja fundamental de estas clases sobre los arrays es que puedan crecer y reducir el número de objetos almacenados.

 

La clase list‹T› esta contenida en System.Collections.Generic.

Sintaxis

La sintaxis para crear una colección list‹T› es la siguiente:
 

 

 

 

Con esta sintaxis ahora podemos crear una list‹T› denominada listacolores:






List‹tipo› nombre = new List‹tipo›();







using System;
using System.Collections.Generic;

public class Lists
{
    static void Main()
    {
        List‹string› listacolores = new List‹string›();
    }
}

Añadir artículos a las listas

Una vez que una lista se ha creado hay una serie de métodos que pueden ser llamados a realizar tareas en la lista. En este caso para agrear elementos a la lista de objetos se utiliza el método Add(). Ejemplo:

List‹string› ListaColores = new List‹string›();

ListaColores.Add ("Azul");
ListaColores.Add ("Rojo");
ListaColores.Add ("Verde");
ListaColores.Add ("Amarillo");
ListaColores.Add ("Morado");

Acceso a elementos

A los elementos individuales en una lista se puede acceder mediante el índice del valor de la partida (teniendo en cuenta que el primer punto del índice es 0, el segundo índice 1 y así sucesivamente). El valor del índice se encuentra entre corchetes tras el nombre de la lista. Por ejemplo, para acceder al segundo punto del objeto ListaColores:

Console.WriteLine (ListaColores[1]); 

Acceso a elementos

Un elemento de la lista puede cambiar su valor de manera similar usando el índice combinado con el operador de asignación. Por ejemplo, para cambiar el color de verde a gris:

ListaColores[2] = "Gris";

Acceso a elementos

Todos los elementos de una lista se puede acceder mediante un bucle foreach. Por ejemplo:

foreach (string color in ListaColores)
{
    Console.WriteLine ( color );
}

Inserción de elementos en una lista

Anteriormente se utilizó el método Add() para añadir elementos a una lista. El método Add(), sin embargo, sólo añade elementos al final de una lista. A veces es necesario añadir un nuevo elemento en una ubicación específica en una lista. Insert() es el método para este fin específico. Insert() recibe dos argumentos, un entero que indica el índice de localización de la inserción y el elemento que se incluirá en ese lugar. Por ejemplo, para insertar un elemento en la posición 2 de la lista seria:

ListaColores.Insert(2, "Blanco");

Ordenando Listas

No hay manera de decirle a C# que ordene automáticamente una lista de artículos despues de añadir. Si los elementos de una lista deben estar siempre ordenados se debe llamar al metodo Sort una vez se añaden nuevos elementos:

ListaColores.Sort();
//Primero hacemos el sort 
ListaColores.Sort();

//Mostramos los colores al reves
ListaColores.Reverse();

Y que tal si se quiere ordenar de manera descendente:

Búsqueda de elementos en una lista

Se proveen un buen número de métodos con las clases listas y la ArrayList. El método más básico es el Contains(), en el cual cuando se pide a un objeto ArrayList o List devuelve true si el tema se encuentra en la lista, o false si no se encuentra.

El IndexOf() devuelve el valor de un índice de un elemento de la lista. Por ejemplo, el código siguiente muestra el valor de salida de 2, que es el índice de la posición de "Amarillo" en la cadena:

List‹string› ListaColores = new List‹string›();

ListaColores.Add ("Rojo");
ListaColores.Add ("Verde");
ListaColores.Add ("Amarillo");
ListaColores.Add ("Morado");
ListaColores.Add ("Gris");

Console.WriteLine(ListaColores.IndexOf("Amarillo"));

Búsqueda de elementos en una lista

Si el elemento no se encuentra en la lista devuelve -1.

Esta técnica podría utilizarse para reemplazar un valor con otro. Por ejemplo, sin conocer de antemano el valor del índice del "Amarillo" cadena podemos cambiar a "Negro":

ListaColores[ListaColores.IndexOf("Amarillo")] = "Negro";

El LastIndexOf() método devuelve el valor del índice del último elemento de la lista para que coincida con el punto especificado. Esto es particularmente útil cuando la lista contiene elementos duplicados.

Obtener informacion de una lista

El propiedad Count, identifica cuantos artículos se encuentran actualmente almacenados en la lista.

int i = ListaColores.Count;

Borrado de elementos

Todos los elementos de una lista podrán ser borrados mediante el método Clear(). Esta función establece la propiedad Count a cero.

ListaColores.Clear();

Para eliminar un elemento es especifico podría utilizar el método Remove(), el cual recibe como parámetro un tipo de dato igual al de su declaración.

ListaColores.Remove("Amarillo");

Borrado de elementos

Si por alguna razón debiera borrar los elementos por su indice (posición en la lista) utilizaría la función RemoveAt() que recibe como parámetro un entero (indice del elemento a borrar).

ListaColores.RemoveAt(2);

De esta manera estaríamos eliminando la posición 2 de la lista. (Recuerda que las posiciones en una lista comienzan desde 0)

Borrado de elementos

Las colecciones también nos permiten eliminar por medio de condicionales. De esta manera nos asemejariamos un poco a estar trabajando con una base de datos. Veamos:

List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(2);
list.Add(4);
list.Add(5);

// Elimina todos los items de la lista donde el valor es 2
// Ha esto se les conoce como Expresiones Lambda.
list.RemoveAll(item => item == 2);

foreach (int i in list)
{
    Console.WriteLine(i);
}

Borrado de elementos

Si quisiéramos borrar desde una posición cierta cantidad de elementos o items, utilizaríamos la función RemoveRange. Ejemplo:

List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(2);
list.Add(4);
list.Add(5);

//Elimina las posiciones 1,2,3 de la lista
list.RemoveRange(1, 3);

foreach (int i in list)
{
    Console.WriteLine(i);
}

List<T>

By Yhoan Andres Galeano Urrea